Docker 搭建MySQL服务
Docker 搭建MySQL服务
参考:
https://www.cnblogs.com/sablier/p/11605606.html
拉取镜像
docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
检查镜像
docker images
开启MySQL并建立目录映射
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:主机(这里指的是虚拟机)与容器端口的映射关系,":"前为主机目录,之后为容器目录
- -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
- -e :启动参数
- --name: 指定容器名
- -d :静默运行
修改主机的指定位置就会影响容器对应的位置,需要重启容器
连接MySQL
注意, 这里建议采用exec
, 因为通过这种方式与tty
交互, 容器不会退出, 如果采用attach
, 退出tty
容器就会退出
docker exec -it mysql /bin/bash
mysql -uroot -proot //拉取的镜像本身是一个精简的Linux系统
这里只做校验, 具体操作通过Navicat
这里说明MySQL容器就一个精简的Linux容器
配置MySQL文件
在主机上操作
yum -y install vim* //安装vim
vi my.conf
配置文件
[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容器
docker restart mysql //重启
docker start mysql //开启
重新进入MySQL容器
docker exec -it mysql /bin/bash
查看容器内配置文件
对外开放3306端口
systemctl status firewalld //查看防火墙状态
systemctl start firewalld //开启防火墙
firewall-cmd --add-port=3306/tcp --permanent //永久开放端口
firewall-cmd --add-service=http --permanent //开放http权
firewall-cmd --reload //重启防护墙,但是不会中断用户连接,不丢失状态
systemctl-cmd --list-all //查看开放的端口
如果这里没有-cmd
选项需要yum install net-tools