docker搭建mysql:5.7.29

拉取对应版本镜像

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

# 默认存储引擎
default-storage-engine=InnoDB

# 服务器ID
server-id=1

# 开启BIN LOG日志
log-bin=mysql-bin

# 设置SQL模式
sql_mode="IGNORE_SPACE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# 服务器默认字符集
character_set_server=utf8

# 默认字符集
collation_server = utf8_general_ci

注意:character_set_databasecollation_database 这两个参数在MySQL5.7版本中已经弃用不再使用
官网文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

文件:run.sh

#!/usr/bin/env bash

# 设置MySQL端口
mysql_port=$1
if [ ! "$mysql_port" ]; then
  mysql_port=3306
fi

# 脚本当前目录
scrpts_path=$(cd $(dirname "$0") || exit; pwd)

# MySQL根目录
dirpath=$(dirname "$scrpts_path")

# 创建MySQL数据存储目录
mkdir -p "$dirpath"/data

# 启动MySQL服务
docker rm mysql_"$mysql_port" -f

docker run -d -p "$mysql_port":3306 --name mysql_"$mysql_port" \
-v="$dirpath"/conf/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v="$dirpath"/data:/usr/local/mysql/data/ \
-v="$dirpath"/data:/var/log/mysql \
-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密码不再是初始密码,而是刚才设定的密码

---------------至此部署完毕---------------

posted @ 2020-04-09 18:00  有我在  阅读(1221)  评论(0编辑  收藏  举报