Docker安装MySQL5.7
1.环境
Linux虚拟机CentOS8
默认已经安装docker
默认已配置国内镜像加速器,不配置的话,可能卡得像麻花。我使用的阿里云的
2.MySQL5.7安装
1.下载镜像
docker pull mysql:5.7
2.创建MySQL容器
docker run -p 3306:3306 --name mysql -v /epo/mysql/log:/var/log/mysql -v /epo/mysql/data:/var/lib/mysql -v /epo/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
参数说明:
- -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
- -v /自己创建的挂载目录/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
- -v /自己创建的挂载目录/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /自己创建的挂载目录/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口 -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 用户的密码
3.配置MySQL
vi /epo/mysql/conf/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=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
注意:解决 MySQL 连接慢的问题 在配置文件中加入如下,并重启 mysql
[mysqld] skip-name-resolve
解释: skip-name-resolve:跳过域名解析
重启mysql
docker restart mysql
4.命令行工具测试链接
docker exec -it mysql mysql -uroot -proot
5.设置root远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;
6.设置mysql开机启动
docker update mysql --restart=always
7.Navicat测试连接
连接成功,则正常使用。
如果连接失败,多半是没有开放端口,被防火墙拦住,查看防火墙状态
systemctl status firewalld
8.开放3306端口
查看3306端口状态
firewall-cmd --query-port=3306/tcp
果然没有开启
开启3306端口,重启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
再次,Navicat测试,成功!
3.注意
因为是虚拟机安装的自玩数据库,也可以简单粗暴,直接关闭防火墙,而不用单独开放端口。但是如果是真实服务器安装,建议不要直接关闭防火墙,而且不要用root这种简单的密码,甚至可以考虑不使用默认端口,否则太容易被扫。