Docker部署mysql
0.安装docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
本文系统是ubuntu,所以直接执行一件官方的自动安装的脚本
1 | curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
在终端输入
1 | docker --version |
测试是否安装成功
1.获取镜像
获取官方镜像
1 | sudo docker pull mysql |
但是,在获取镜像的时候出现了
上述情况,可采用国内的镜像仓库
2.配置仓库源
永久性的解决问题的话,需要新建或编辑/etc/docker/daemon.json文件。添加如下格式内容
1 | { |
其中将加速地址可以在阿里云获取专属加速地址
之后执行
1 | sudo systemctl daemon-reload |
再重新获取一下镜像,速度飕飕滴
执行
1 | sudo docker images |
就能看见刚刚获取的镜像了。
3.新建数据库
1 | sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql |
参数说明:
-name: 容器的名字
-e: 配置信息,此处为mysql的root用户的登陆密码
-p: 端口映射。此处主机端口3306映射到容器端口3306
查看容器是否正确运行
1 | sudo docker container ls |
正常情况,可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字。
4.连接mysql
进入docker本地连接mysql
1 | sudo docker exec -it mysql bash |
5.远程连接
在创建容器的时候已经将容器的3306端口和主机的3306端口映射到一起,所以我们应该访问:
1 | host: 127.0.0.1 |
6.无法访问mysql的几种原因和解决办法
防火墙阻拦
1 | 开放端口: |
需要进入docker本地客户端设置远程访问账号
1 | sudo docker exec -it mysql bash |
原理:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 mysql使用mysql数据库中的user表来管理权限,修改user表就可以修改权限(只有root账号可以修改)
use mysql;
Database changed
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)
grant all privileges on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)
flush privileges;
Query OK, 0 rows affected (0.00 sec)
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)
参考文章:https://www.cnblogs.com/sablier/p/11605606.html
版权声明:转载请注明出处!
文章说明: 文章如有不足或者纰漏之处,欢迎留言斧正!