1、下载镜像文件
docker pull mysql:5.7
docker images 查看
![](https://img-blog.csdnimg.cn/5aa97160bf83498b8754687d68337863.png)
2、创建实例并启动
docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7
命令解析
-p 3306:3306 :将容器的 3306 端口映射到主机的 3306 端口--name mysql :给容器起名为 mysql-v /mydata/mysql/conf:/etc/mysql :将配置文件夹挂载到主机-v /mydata/mysql/log:/var/log/mysql :将日志文件夹挂载到主机-v /mydata/mysql/data:/var/lib/mysql/ :将配置文件夹挂载到主机-e MYSQL_ROOT_PASSWORD=root :初始化 root 用户的密码-d mysql:5.7 mysql:5.7 启动这个容器
参数说明
-p 端口映射-v 目录挂载-e 启动时设置参数-d 后台运行
查看docker正在运行的容器
docker ps
![](https://img-blog.csdnimg.cn/d7b63acc993f4ceca8ec4989b635a0b4.png)
也可以用本地数据库链接工具测试是否链接成功
- docker run 每一次 就会 启动一个容器,容器与容器之间互相隔离,每一个容器都是一个完整的运行环境,相当于mysql被装到容器里的linux里
- docker stop xxx :关闭xxx容器
- docker start xxx :开启xxx容器
- docker exec -it xxx /bin/bash:进入容器内部
- 进入容器内部后可以发现,容器内部有一个linux,linux里装了一个mysql,-p 3306:3306就是将外面linux端口3306对应 docker里面linux的3306端口
- -v /mydata/mysql/conf:/etc/mysql:将外部linux的/mydata/mysql/conf目录和容器内linux的/etc/mysql目录做映射,这样就不用进容器内部修改mysql的参数了(类似windows快捷方式)
- docker update mysql --restart=always 把mysql设置成虚拟机开机自启动
![](https://img-blog.csdnimg.cn/02d69d8fe1804e74b4d621e1320f8c75.png)
MySQL 配置(改成utf-8格式)
vi /mydata/mysql/conf/my.cnf
将以下内容加到my.cnf中
[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
:wq保存后,重启mysql:
docker restart mysql
注意:解决
MySQL
连接慢的问题
在配置文件中加入如下,并重启
mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve
:跳过域名解析
3、通过容器的 mysql 命令行工具连接
docker exec -it mysql mysql -uroot -proot
4、设置 root 远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
5、进入容器文件系统
docker exec -it mysql