Skip to content

服务安装——MySql

MySQL Docker 部署与使用

通用说明

  • 使用 Docker 可以快速部署 MySQL 不同版本。
  • 注意端口映射,避免与宿主机或其他容器冲突。
  • 推荐使用数据卷实现数据持久化。

版本差异速查表

特性MySQL 8.0MySQL 5.7
默认字符集utf8mb4latin1
默认密码加密caching_sha2_passwordmysql_native_password
JDBC 额外配置可能需要 allowPublicKeyRetrieval一般不需要
推荐端口3307(避免冲突)3306

MySQL 8.0 部署与使用

1. 拉取镜像

bash
docker pull mysql:8.0

2. 运行容器(基础版)

bash
docker run --name mysql8 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -p 3307:3306 \
  -d mysql:8.0

说明:将宿主机的 3307 端口映射到容器的 3306

3. 数据持久化(推荐)

bash
docker run --name mysql8 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -p 3307:3306 \
  -v /your/data/dir:/var/lib/mysql \
  -d mysql:8.0

1、先创建文件夹

# 创建数据目录
mkdir -p /docker/service-data/mysql/dir

# 然后执行 docker run
docker run --name mysql8 \
  -e MYSQL_ROOT_PASSWORD=lq54123 \
  -p 3307:3306 \
  -v /docker/service-data/mysql/dir:/var/lib/mysql \
  -d mysql:8.0

账号密码

root
lq54123

4. 查看容器状态

bash
docker ps

5. 连接到 MySQL 8.0

bash
docker exec -it mysql8 mysql -uroot -pyourpassword

6. 新建数据库字符集与排序规则建议

  • 字符集utf8mb4(MySQL 8.0+ 默认,支持 emoji)
  • 排序规则建议
    • utf8mb4_general_ci:中文通用,不区分大小写
    • utf8mb4_unicode_ci:更准确,稍慢
    • utf8mb4_bin:区分大小写

7. 连接注意事项(客户端 / JDBC)

MySQL 8.0 默认使用 caching_sha2_password 加密策略,某些老客户端可能报错:

Public Key Retrieval is not allowed

解决方案:在 JDBC 连接字符串中添加参数

properties
jdbc:mysql://localhost:3307/dbname?allowPublicKeyRetrieval=true

示例:

bash
jdbc:mysql://192.168.31.196:3307/mysql?allowPublicKeyRetrieval=true

MySQL 5.7 部署与使用

1. 拉取镜像

bash
docker pull mysql:5.7

2. 运行容器(基础版)

bash
docker run --name mysql57 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -p 3306:3306 \
  -d mysql:5.7

3. 数据持久化(推荐)

bash
docker run --name mysql57 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -p 3306:3306 \
  -v /my/own/datadir:/var/lib/mysql \
  -d mysql:5.7

4. 连接到 MySQL 5.7

bash
docker exec -it mysql57 mysql -uroot -pyourpassword

5. 字符集说明(5.7 默认不是 utf8mb4)

  • 建议显式设置字符集为 utf8mb4,排序规则同上。