Docker安装MySQL


前言

为了更好的管理,打算把MySQL、Redis等服务放在虚拟机中统一部署,这样不会因为这些服务的问题影响到系统本身。前段时间正好在看docker相关的内容,打算在虚拟机中通过docker来使用MySQL等服务。

一、下载镜像文件

1
$ docker pull mysql:5.7

二、查看镜像

1
$ docker images

三、创建实例并启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ docker run -p 3306:3306 --name=mysql57 \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/:/etc/mysql \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7

# 参数说明
--restart=always # 当docker重启时,该容器自动重启
--name mysql # 将容器命名为mysql,后面可以用这个name进行容器的启动暂停等操作
-e MYSQL_ROOT_PASSWORD=123456 # 设置MySQL密码为123456
-d # 此容器在后台运行,并且返回容器的ID
-i # 以交互模式运行容器
-p 3306:3306 # 将容器的3306端口映射到主机的3306端口
-v /data/mysql/log:/var/log/mysql # 将配置文件夹挂载到主机
-v /data/mysql/data:/var/lib/mysql # 将日志文件夹挂载到主机
-v /data/mysql/conf/:/etc/mysql # 将配置文件夹挂载到主机
-e TZ=Asia/Shanghai # 时区设置

四、修改配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 进入配置目录
$ cd /data/mysql/conf

# 修改数据库配置
$ vim my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

# 重启 mysql57 容器
$ docker restart mysql57

五、设置启动docker时,即运行mysql

1
$ docker update mysql --restart=always

六、启动docker容器的时候报错

1
2
3
$ docker start mysql57
Error response from daemon: driver failed programming external connectivity on endpoint mysql57
Error: failed to start containers: mysql57

解决方法:重启docker

1
$ systemctl restart docker

本地客户端设置远程访问账号

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

防火墙设置

1
2
3
4
5
6
# 开放端口:
$ systemctl status firewalld
$ firewall-cmd --zone=public --add-port=3306/tcp -permanent
$ firewall-cmd --reload
# 关闭防火墙:
$ sudo systemctl stop firewalld
坚持原创技术分享,您的支持将鼓励我继续创作!