拉取对应版本镜像
docker pull mysql:5.7.29
mysql:5.7.29容器中目录结构
|-- conf.d
| |-- docker.cnf
| |-- mysql.cnf
| |-- mysqldump.cnf
|-- my.cnf -> /etc/alternatives/my.cnf
|-- my.cnf.fallback
|-- mysql.cnf
|-- mysql.conf.d
|-- mysqld.cnf
注意:不要映射:
/etc/mysql/my.cnf
,该文件是个软连。即使映射成功配置文件是不会生效的。
编写脚本
├─mysql5.7
│ ├─conf
│ │ └─mysql.conf.d
│ │ mysqld.cnf
│ └─scripts
│ run.sh
文件:mysqld.cnf
[mysql]
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
server-id=1
文件:run.sh
#!/usr/bin/env bash
# 脚本当前目录
scrpts_path=$(cd $(dirname "$0") || exit; pwd)
# MySQL根目录
dirpath=$(dirname "$scrpts_path")
# 创建MySQL数据存储目录
mkdir -p "$dirpath"/data
# 启动MySQL服务
docker rm mysql -f
docker run -d -p 3306:3306 --name mysql -v="$dirpath"/conf/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v="$dirpath"/data:/usr/local/mysql/data/ -e MYSQL_ROOT_PASSWORD=123 mysql:5.7.29
说明
- 修改容器中的配置文件
- 修改mysql数据目录
- 设置mysql初始密码
启动MySQL服务
sh scripts/run.sh
执行:docker ps 查看服务是否启动成功
注意:data 目录不要随便删除
注意:该镜像自动创建远程账号:root 密码就是初始密码
进入MySQL服务容器内
docker exec -it mysql bash
连接MySQL
mysql -uroot -p
# 初始密码:123
修改密码
按需操作
# 修改本地连接账号-置空
alter user ‘root‘@‘localhost‘ identified by ‘‘;
# 修改远程账号密码-置空
alter user ‘root‘@‘%‘ identified by ‘‘;
注意:此时连接mysql服务器root密码不再是初始密码,而是刚才设定的密码
---------------至此部署完毕---------------