目录
前言
一、编写.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结束=========================
"
}