系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > Mysql > 详细页面

Docker 搭建 MySQL 服务

时间:2020-04-24来源:电脑系统城作者:电脑系统城

建立镜像

拉取镜像#


 
Copy
# 拉取最新版本镜像 docker pull mysql # 拉取执行版本镜像 docker pull mysql:版本号

检查拉取是否成功#


 
Copy
docker images

image-20200424003317444

创建数据库容器(不建立数据映射)#


 
Copy
docker run -d --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 # -d 代表后台运行 # -name 代码容器名称 # -p 代表端口映射,格式为 宿主机映射端口:容器运行端口 # -e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

创建数据库容器(建立数据映射)#


 
Copy
docker run -p 3306:3306 --name mysql-3307 \ -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=123456 \ -d mysql:latest # -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

检查容器是否正确运行#


 
Copy
docker container ls # 可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字

远程连接MySQL

进入docker本地连接mysql客户端#


 
Copy
sudo docker exec -it mysql bash mysql -uroot -p123456

远程连接mysql#

远程连接软件时要注意问题#

我们在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:


 
Copy
host: 安装mysql机器ip port: 3306 user: root password: 123456

无法连接到MySQL的几个原因#

  • 防火墙阻拦

 
Copy
# 开放端口: $ systemctl status firewalld $ firewall-cmd --zone=public --add-port=3306/tcp -permanent $ firewall-cmd --reload # 关闭防火墙: $ sudo systemctl stop firewalld
  • 需要进入docker本地客户端设置远程访问账号

 
Copy
$ sudo docker exec -it mysql bash $ mysql -uroot -p123456 mysql> grant all privileges on *.* to root@'%' identified by "password";

​ 原理:


 
Copy
# mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改) mysql> use mysql; Database changed mysql> select host,user,password from user; +--------------+------+-------------------------------------------+ | host | user | password | +--------------+------+-------------------------------------------+ | localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E | | 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E | +--------------+------+-------------------------------------------+ 2 rows in set (0.00 sec) mysql> grant all privileges on *.* to root@'%' identified by "123456"; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select host,user,password from user; +--------------+------+-------------------------------------------+ | host | user | password | +--------------+------+-------------------------------------------+ | localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E | | 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E | | % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E | +--------------+------+-------------------------------------------+ 3 rows in set (0.00 sec)
分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载