docker部署MySQL 8.0的方法

最近很多都开始使用mysql8.0,部署8.0和5.7有一些小区别,还是记录一下

拉取MySQL 8.0镜像

使用以下命令拉取官方MySQL 8.0镜像:

docker pull mysql:8.0
启动MySQL容器

运行容器时需设置root密码、数据卷映射及端口映射:

docker run --name mysql8.0 \
-e MYSQL_ROOT_PASSWORD=your_password \
-v /path/to/data:/var/lib/mysql \
-p 3306:3306 \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

-v参数指定数据持久化路径,-p映射主机端口,--character-set-server设置默认字符集为UTF-8MB4。

调整配置文件(可选)

如需自定义配置,可在主机创建my.cnf文件并挂载到容器:

docker run --name mysql8.0 \
-v /path/to/my.cnf:/etc/mysql/my.cnf \
...其他参数同上...

配置文件示例:

[mysqld]
default_authentication_plugin=mysql_native_password
max_connections=200
容器管理命令
  • 查看运行状态
    docker ps -f name=mysql8.0
    
  • 进入容器终端
    docker exec -it mysql8.0 bash
    
  • 停止/启动容器
    docker stop mysql8.0
    docker start mysql8.0
    
远程连接配置

若需远程访问,需在MySQL容器内执行以下SQL:

CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
FLUSH PRIVILEGES;

同时确保主机的防火墙允许3306端口通信。

数据备份与恢复
  • 备份数据库
    docker exec mysql8.0 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql
    
  • 恢复数据
    cat backup.sql | docker exec -i mysql8.0 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"'
    
性能优化建议
  • 为容器分配足够内存(通过-m 2g参数限制内存)。
  • 使用SSD存储以提高I/O性能。
  • 监控容器资源使用情况:docker stats mysql8.0

通过以上步骤可快速部署并管理MySQL 8.0容器,适用于测试或生产环境。

更多推荐