目录
前言
一、编写.sql文件
二、执行.sql文件
三、复制配置文件
四、完整代码
前言
前段时间写了一个依托docker自动部署mysql、nginx、ftp、nacos、redis、Rocketmq的.sh脚本,做mysql时遇到了一个问题,就是装好的镜像服务初始密码不正确,然后通过修改mysql的配置文件,跳过密码登录,之后在mysql中设置密码解决了这个问题。然后就想也写到.sh脚本中。
一、编写.sql文件
主要就是一个修改密码,记得加上刷新不然不生效
use mysql; update mysql.user set authentication_string = password("demo@2024") where user="root"; flush privileges;
二、执行.sql文件
如果是在mysql服务中我这个使用了管道符去执行.sql文件
mysql -uroot -p123456 < /install/sqlFile/updatePass.sql
但是我用的是docker安装的mysql镜像,想在镜像外去执行 脚本文件
docker exec -i 镜像名称 mysql -uroot < /install/sqlFile/updatePass.sql
三、复制配置文件
cp -f baseService/mysql/skipPass.cnf 镜像名称/conf/my.cnf
四、完整代码
# 安装MySql docker_mysql(){ application="base-mysql" image="mysql" applicationPath="/usr/local/mysql" port="3306" passwd="demo@2024" version="5.7" echo -e " =========================开始安装MySql========================= " # 删除已有容器和镜像 delExisting ${application} # 输入版本号并拉取镜像 docker_pull # 创建映射目录 create_file_path conf logs data # 创建并启动docker容器 cp -f baseService/mysql/skipPass.cnf $applicationPath/conf/my.cnf echo -e " 开始创建并启动${application}容器…… " dockerRunCmd="docker run -itd --network=net --ip 172.18.0.2 -p $port:3306 --name $application --restart=always -e TZ=Asia/Shanghai -v ${applicationPath}/data/:/var/lib/mysql -v ${applicationPath}/logs/:/logs -v ${applicationPath}/conf/:/etc/mysql/conf.d -v /etc/localtime:/etc/localtime:ro --privileged=true -e MYSQL_ROOT_PASSWORD=$passwd -d $image:$version" eval $dockerRunCmd # 判断容器是否启动成功 successOrNot # 替换nacos中的IP if [ "$ip" == "" ];then ip=`hostname -I | awk '{print $1}'` echo "本机IP地址为$ip(如有多网卡ip可能会不准确,请自行确认)" if [ "$ip" == "" ];then read -p "查询内网IP失败,请手动输入:" ip fi fi sed -i "s/192.168.101.153/${ip}/g" `grep 192.168.101.153 -rl sqlFile/nacos.sql` sleep 2 echo -e " 开始导入数据 " # 更新密码 docker exec -i $application mysql -uroot < /install/sqlFile/updatePass.sql cp -f baseService/mysql/my.cnf $applicationPath/conf/my.cnf docker restart $application echo -e " 导入数据结束 " echo -e " 开启防火墙端口3306 " firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload echo -e " =========================安装MySql结束========================= " }