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 | mkdir /docker |
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 记得开放对应端口