使用Docker搭建MySQL服务
本文内容纲要:
-一、安装docker
-二、建立镜像
-三、连接mysql
-参考连接:
一、安装docker
windows和mac版可以直接到官网下载dockerdesktop
linux的安装方法可以参考https://www.cnblogs.com/myzony/p/9071210.html
可以在shell中输入以下命令检查是否成功安装:sudodockerversion
二、建立镜像
-
拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)
dockerpullmysql:5.7#拉取mysql5.7 dockerpullmysql#拉取最新版mysql镜像
MySQL文档地址
-
检查是否拉取成功
$sudodockerimages
-
一般来说数据库容器不需要建立目录映射
sudodockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7
- –name:容器名,此处命名为
mysql
- -e:配置信息,此处配置mysql的root用户的登陆密码
- -p:端口映射,此处映射主机3306端口到容器的3306端口
- -d:后台运行容器,保证在退出终端后容器继续运行
- –name:容器名,此处命名为
-
如果要建立目录映射
dusodockerrun-p3306:3306--namemysql\ -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\ -eMYSQL_ROOT_PASSWORD=123456\ -dmysql:5.7
- -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录
-
检查容器是否正确运行
dockercontainerls
- 可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字
三、连接mysql
-
进入docker本地连接mysql客户端
sudodockerexec-itmysqlbash mysql-uroot-p123456
-
使用远程连接软件时要注意一个问题
我们在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:
host:127.0.0.1 port:3306 user:root password:123456
-
如果你的容器运行正常,但是无法访问到MySQL,一般有以下几个可能的原因:
-
防火墙阻拦
#开放端口: $systemctlstatusfirewalld $firewall-cmd --zone=public--add-port=3306/tcp-permanent $firewall-cmd --reload #关闭防火墙: $sudosystemctlstopfirewalld
-
需要进入docker本地客户端设置远程访问账号
$sudodockerexec-itmysqlbash $mysql-uroot-p123456 mysql>grantallprivilegeson*.*toroot@'%'identifiedby"password";
原理:
#mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改) mysql>usemysql; Databasechanged mysql>selecthost,user,passwordfromuser; +--------------+------+-------------------------------------------+ |host|user|password| +--------------+------+-------------------------------------------+ |localhost|root|*A731AEBFB621E354CD41BAF207D884A609E81F5E| |192.168.1.1|root|*A731AEBFB621E354CD41BAF207D884A609E81F5E| +--------------+------+-------------------------------------------+ 2rowsinset(0.00sec) mysql>grantallprivilegeson*.*toroot@'%'identifiedby"password"; QueryOK,0rowsaffected(0.00sec) mysql>flushprivileges; QueryOK,0rowsaffected(0.00sec) mysql>selecthost,user,passwordfromuser; +--------------+------+-------------------------------------------+ |host|user|password| +--------------+------+-------------------------------------------+ |localhost|root|*A731AEBFB621E354CD41BAF207D884A609E81F5E| |192.168.1.1|root|*A731AEBFB621E354CD41BAF207D884A609E81F5E| |%|root|*A731AEBFB621E354CD41BAF207D884A609E81F5E| +--------------+------+-------------------------------------------+ 3rowsinset(0.00sec)
-
参考连接:
https://blog.csdn.net/jor_ivy/article/details/81323199
https://www.52pojie.cn/thread-727433-1-1.html
本文内容总结:一、安装docker,二、建立镜像,三、连接mysql,参考连接:,
原文链接:https://www.cnblogs.com/sablier/p/11605606.html