首页 文章资讯内容详情

使用Docker搭建MySQL服务

2026-05-31 4 花语

本文内容纲要:

-一、安装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:后台运行容器,保证在退出终端后容器继续运行

如果要建立目录映射

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