Contents

Docker 容器来安装mysql比较方便快捷,对于开发来说是比较简单的事情,如果有云服务器的小伙伴,安装过程比本地都要快一些。

1、拉取镜像

1
2
3
docker pull mysql:5.7  # 这里选择5.7 这个版本,如果没有写就是默认:lastest, 最新的
# 查看镜像
docker images

2、运行镜像,创建一个mysql容器

1
2
3
4
5
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=root -p 3316:3306 -d mysql:5.7
###千万记得是mysql:5.7 不然docker 会自动拉取一遍最新的mysql

# 查看运行状态
docker ps

一般来说此时已经完成了安装,直接就可以拿Navicat或者别的UI工具就可以联起来了。

如果出现问题,可能有如下情况

3、远程Navicat连接,或访问禁止,一般是2003报错,一般是没有开放远程访问权限

1
2
3
4
5
6
7
8
9
10
11
12
docker exec -it test-mysql bash
#此时已经切换
mysql -u root -p
# 输入密码

show databases;

use mysql;
# 修改一下,方面别的机器访问
update user set host = '%' where user = 'root' and host='localhost';
#刷新一下权限
flush privileges;

4、 创建多个mysql 以及修改配置文件

1)可以启动多个mysql服务,因为我们启动的是容器,容器可以多个,只要容器名字映射段端口不一样就可以了

1
docker run --name dbdb -e MYSQL_ROOT_PASSWORD=123456 -p 6666:3306 -d mysql

2) 修改mysql配置文件的两种方法

a. 进入容器,修改容器里面的mysql配置文件

1
docker exec -it 容器名 /usr/bin/bash

进入命令行模式,接着修改/etc/mysql/my.cnf文件即可

b.挂载主机的mysql配置文件

1
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

5、其他

1) 注意防火墙的问题,如果没有开放相关的端口,要开放相关端口才能访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看防火墙的运行状态
systemctl status firewalld
#查看防火墙开放端口列表
firewall-cmd --list-ports
#开启防火墙
systemctl start firewalld
#开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#开启3307端口
firewall-cmd --zone=public --add-port=3307/tcp --permanent
#开启3308端口
firewall-cmd --zone=public --add-port=3308/tcp --permanent
#重启防火墙
systemctl restart firewalld.service

2)docker运行的mysql怎么直接用命令把数据库导出来

1
2
 docker exec -it mysql57 mysqldump -uroot -proot estate2 > /opt/estate2.sql 
# mysql57 是容器名,-uroot root是账号,-pahead ahead 是密码, estate2 是你要导出的表, > 后面是导出的目标路劲

3)docker导入sql文件

1
2
3
4
5
6
7
8
9
10
11
12
# 复制sql文件到docker mysql 里面的文件夹
docker cp ./admin.sql mysql57:/opt/

#进入后台
docker exec -it mysql57 bash
#进入数据库
mysql -u root -p
# 输入密码之后
# 使用数据库,或者自己创建
use admin;
#执行导入命令
source /opt/admin.sql
Contents