# 1. 拉取 MySQL 8 官方镜像
docker pull mysql:8.0# 2. 创建数据和配置目录(实现数据持久化)
mkdir -p /opt/mysql/{data,conf,logs}
chmod -R 777 /opt/mysql # 赋予权限,避免容器内权限问题# 3. 创建自定义配置文件(可选,优化 MySQL 性能)
cat > /opt/mysql/conf/my.cnf << EOF
[mysqld]
# 端口设置
port=3306
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 数据存储目录(容器内路径)
datadir=/var/lib/mysql
# 日志配置
log-error=/var/log/mysql/error.log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=2
# 其他优化参数
max_connections=1000
default-time-zone='+8:00' # 设置时区为东八区
EOF# 4. 启动 MySQL 容器(后台运行)
docker run -d --name mysql8 -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=YourRootPassword -e MYSQL_INITDB_SKIP_TZINFO=1 -v /opt/mysql/data:/var/lib/mysql -v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf -v /opt/mysql/logs:/var/log/mysql mysql:8.0# 5. 验证容器是否启动成功
docker ps | grep mysql8# 6. 进入 MySQL 容器并登录
docker exec -it mysql8 mysql -u root -p
# 输入步骤 4 中设置的 root 密码(YourRootPassword)# 7. 登录后可执行的操作(示例)
# 查看数据库版本
# SELECT VERSION();
# 创建新用户并授权
# CREATE USER 'newuser'@'%' IDENTIFIED BY 'userpassword';
# GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
# FLUSH PRIVILEGES;
