1.拉取镜像
sudo docker pull mysql
不指定版本号默认拉取最新版本,指定版本号示例如下
sudo docker pull mysql:5.7
可去dockerHub官网 https://registry.hub.docker.com/ 查找所需的镜像,无需登录,直接搜索
找到mysql后选择Tags页面,查找所需版本,复制拉取命令
2.创建实例
sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:latest
-p 3306:3306
映射端口
-v /usr/local/mysql/conf:/etc/mysql/conf.d
挂载目录,冒号(:)前为宿主机目录,后为docker内部目录
-e MYSQL_ROOT_PASSWORD=123456
设置root用户密码
–name mysql
指定容器名称
mysql:latest
指定镜像及版本
3.检查部署是否成功
docker ps
看到运行实例表示部署成功
4.调整时区
docker部署mysql会出现时区不正确问题,调整时区后问题解决
docker cp /usr/share/zoneinfo/Asia/Shanghai 47799179873e:/etc/localtime
47799179873e为容器ID,替换为你的容器ID,可用docker ps查看容器ID
5.建立链接慢
mySql会对连接的客户端进行DNS解析,导致链接慢,可通过配置关闭DNS解析。
修改容器内/etc/mysql/conf.d/mysqld.cnf文件,在最后一行添加skip-name-resolve,修改完重启容器,问题解决。
修改方式:
(1)进入docker容器,直接用vi命令修改,若docker没有安装vi命令可采用方法2或3
进入容器
docker exec -it 容器ID /bin/bash
修改文件
vi /etc/mysql/conf.d/mysqld.cnf
(2)将容器内文件复制到本地,修改,再将修改过的文件复制回docker容器
复制docker内文件到本地,$PWD代表当前目录
docker cp 容器ID:/etc/mysql/conf.d/mysqld.cnf $PWD
修改本地文件
vi mysqld.cnf
复制修改后的文件到docker内部
docker cp $PWD/mysqld.cnf 容器ID:/etc/mysql/conf.d/mysqld.cnf
(3)直接修改本地挂载文件
查看挂载目录
docker inspect 容器ID | grep Binds -A 4
我的挂载目录如下,直接修改
至此,所有的修改方法介绍完成,重启容器,问题解决。
6.Navicat客户端连接mySql,长时间无操作后再次查询非常慢
我安装了最新版mysql,测试过程中发现Navicat客户端10分钟无操作会断开连接,再次操作重新连接非常慢。查阅资料得知新版mysql会定期清理长时间无操作的连接以保证性能。
很多网友提供解决方案修改wait_timeout,测试无效。
解决方案:
编辑连接>高级>勾选保持连接间隔
Navicat会根据配置的时间给服务器发送心跳以保持连接,亲测有效,问题解决。
原文链接:https://blog.csdn.net/secretdaixin/article/details/128116127?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836987416800182186383%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836987416800182186383&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-20-128116127-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94NAS