dockerhub关于mysql的操作指南:
https://hub.docker.com/_/mysql
一、拉取官方镜像
# docker pull mysql:5.7 #拉取mysql5.7镜像
# docker pull mysql #拉取最新mysql镜像
二、查看系统中所有docker镜像
# sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 db39680b63ac 12 days ago 437MB
三、启动mysql实例
# docker run -p 3306:3306 --name mysql0 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
其中mysql0 是要分配给容器的名称, MYSQL_ROOT_PASSWORD是要为MySQL根用户设置的密码,-d 表示我们以守护试式方式(没有交互界面)启动实例,-p 端口映射,此处映射服务器3306端口到容器的3306端口。
也可以在启动时指定mysql容器的字符集
# docker run -p 3306:3306 --name mysql0 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果要建立目录映射关系,则使用以下命令
duso docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=hungteshun \
-d mysql:5.7
-v:主机和容器的目录映射关系。
四、查看容器运行状态
# docker container ls
或者
# docker ps -a
# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
62776ae68d2f mysql:5.7 "docker-entrypoint.s…" 49 minutes ago Up 49 minutes
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
62776ae68d2f mysql:5.7 "docker-entrypoint.s…" 50 minutes ago Up 50 minutes
五、使用交互方式进入mysql服务
# docker exec -it mysql0 bash
root@62776ae68d2f:/# mysql -uroot -phungteshun
六、如果容器运行正常,但是无远程访问到MySQL,可能是以下原因
原因一:防火墙阻拦,CentOS 服务器需要开放 3307 端口
在 Centos 7 或 RHEL 7 或 Fedora 中防火墙由 firewalld 来管理,而不是 iptables
1、查询firewalld状态
# systemctl status firewalld
2、如果firewalld服务关闭,则通过下列命令开启 firewalld 服务
# systemctl start firewalld
没有任何提示即开启成功
3、查看已开放的端口
# firewall-cmd --zone=public --list-port
80/tcp 8080/tcp
4、添加3306端口
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
5、重启firewalld服务
# firewall-cmd --reload
也可以还原传统的管理方式使用 iptables
1、屏蔽firewalld服务
# systemctl stop firewalld
# systemctl mask firewalld
2、安装 iptables-services
# yum install iptables-services
3、设置开机启动
# systemctl enable iptables
4、启动iptables服务
# systemctl stop iptables
# systemctl start iptables
# systemctl restart iptables
# systemctl reload iptables
5、保存设置
# service iptables save
6、在 /etc/sysconfig/iptables 里添加需要开放的端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
原因二:在mysql容器中设置远程访问账号
# docker exec -it mysql0 bash
root@62776ae68d2f:/# mysql -uroot -phungteshun
mysql> grant all privileges on *.* to root@'%' identified by "password";
mysql> flush privileges;
版权声明:本文为hjfcgt123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。