容器部署mysql
1. 创建容器并进行持久化处理
# 拉取镜像
docker pull mysql:8.0.20
# 启动镜像,用于拷贝配置文件到宿主机
docker run -p 13306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.40
# 查看是否启动成功
docker ps -a
# 新建挂载目录并拷贝配置文件
mkdir -p /mysqldata/
docker cp mysql:/etc/mysql /mysqldata/
# 删除原有镜像
docker stop mysql
docker rm -f mysql
# 启动mysql,挂载配置文件,数据持久化到宿主机
docker run \
-p 13306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /home/mysqldata/mysql:/etc/mysql \
-v /home/mysqldata/mysql/logs:/logs \
-v /home/mysqldata/mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=cqrecadmin \
-d mysql:8.0.20
# 检查是否运行成功
docker ps -a
命令解释:
-p端口映射--privileged=true挂载文件权限设置--restart unless-stopped设置开机后自动重启容器-v /mnt/sda1/mysql8.0.20/mysql:/etc/mysql挂载配置文件-v /mnt/sda1/mysql8.0.20/logs:/logs挂载日志-v /mnt/sda1/mysql8.0.20/data:/var/lib/mysql挂载数据文件,持久化到主机-v /etc/localtime:/etc/localtime容器时间与宿主机同步-e MYSQL_ROOT_PASSWORD=cquisse设置密码-d mysql:8.0.20后台启动 MySQL
2. 配置远程连接并尝试
# 进入容器
docker exec -it mysql bash
# 登录 MySQL,输入运行容器时配置的密码
mysql -u root -p
# 执行 SQL
CREATE USER 'user_galen'@'%' IDENTIFIED WITH mysql_native_password BY 'Galen*10';
GRANT ALL PRIVILEGES ON *.* TO 'user_galen'@'%';
退出到服务器,开放对应端口
firewall-cmd --add-port=13306/tcp --permanent
firewall-cmd --reload
测试连接

