docker部署 mysql

why

在 linux 中部署 mysql 是一件比较复杂的事情,使用 docker 部署可以减少很多麻烦.

how

拉取 mysql 镜像

这里我们使用 mysql:5.7 镜像

1
docker pull mysql:5.7

创建 mysql 镜像并后台启动

1
docker run -d -p 3306:3306 -e MYSQL_USER="user" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --name mysqlService mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci

参数说明:

  • -p 设置端口映射 3306:3306 代表外部 3306 端口映射到容器内 3306 端口

  • -d 表示作为一个守护进程在后台运行

  • -e MYSQL_USER=”user” :添加用户 user

  • -e MYSQL_PASSWORD=”123456”:设置添加的用户密码

  • -e MYSQL_ROOT_PASSWORD=”123456”:设置 root 用户密码

  • –character-set-server=utf8:设置字符集为 utf8

  • –collation-server=utf8_general_cli:设置字符比较规则为 utf8_general_cli

挂载外部配置和数据

启动上面的容器时,配置文件和数据是保存在容器内部的,这样容器停止运行的时候,数据就会丢失,我们现在要把 mysql 的配置文件以及 mysql 数据存放从外部挂载.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/conf
mkdir /docker/mysql/data

创建my.cnf配置文件
touch /docker/mysql/conf/my.cnf

my.cnf添加如下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
1
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysqltest2 mysql:5.7

参数说明:

–privileged=true:容器内的 root 拥有真正 root 权限,否则容器内 root 只是外部普通用户权限

-v /docker/mysql/conf/my.cnf:/etc/my.cnf:映射配置文件

-v /docker/mysql/data:/var/lib/mysql:映射数据目录

then

使用 navicat 或者其他工具连接数据库即可,如果 docker 部署在 ecs 记得开放对应端口

thank u !