docker安装 mysql8

1. 环境准备

首先,确保你的系统已安装 Docker。如果尚未安装 Docker,请参考相关文档进行安装:

2. 创建宿主机挂载目录

为了方便管理 MySQL 的配置文件、数据和日志,需要在宿主机上创建相应的挂载目录:

mkdir -p /mnt/mysql/{conf,data,logs}

 

设置挂载目录权限:

为确保容器能够正常访问和写入这些目录,需要调整宿主机目录的权限:

sudo chown -R 999:999 /mnt/mysql/data
sudo chown -R 999:999 /mnt/mysql/logs

 

  • 999:999 是 MySQL 容器内的 mysql 用户和组的 UID 和 GID。通过将权限设置为 999:999,确保容器能够正确地读写数据和日志文件。

3. 准备 MySQL 配置文件

在 /mnt/mysql/conf 目录下创建 MySQL 的配置文件。可以从官方 MySQL 镜像中获取默认配置文件并进行定制化设置。以下是一个基础的 my.cnf 配置文件示例:

首先,进入 /mnt/mysql/conf 目录并创建配置文件:

vi /mnt/mysql/conf/my.cnf

然后,添加以下内容到 my.cnf 配置文件中:

[mysqld]
# MySQL 数据存储路径
datadir=/var/lib/mysql

# MySQL 错误日志路径
log-error=/var/log/mysql/error.log

# 启用远程连接
bind-address=0.0.0.0

# 设置字符集为 utf8mb4
character-set-server=utf8mb4

# 默认排序规则为 utf8mb4_0900_ai_ci,若需兼容 MySQL 5.7 可使用 utf8mb4_unicode_ci
collation-server=utf8mb4_0900_ai_ci

4. 拉取 MySQL 8 Docker 镜像

在宿主机上执行以下命令来拉取最新版本的 MySQL 8 Docker 镜像:

docker pull mysql:8

 

5. 启动 MySQL 容器

通过 Docker 启动 MySQL 8 容器,并将宿主机的 /mnt/mysql 目录挂载到容器的相应路径。执行以下命令:

docker run -d \
--name mysql8 \
-e MYSQL_ROOT_PASSWORD=Youlai@2025 \
-p 3306:3306 \
-v /mnt/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mnt/mysql/data:/var/lib/mysql \
-v /mnt/mysql/logs:/var/log/mysql \
mysql:8

 

6. 查看容器运行状态

使用以下命令检查 MySQL 容器是否成功启动:

docker ps

7. 配置 MySQL 远程连接权限

默认情况下,MySQL 只允许本地连接。如果你希望允许远程连接,可以通过修改 MySQL 的用户权限来实现。首先,进入 MySQL 容器并登录数据库:

docker exec -it mysql8 mysql -u root -p
# 输入容器创建时设置的 root 用户密码
# Enter password: yourpassword

接着,执行以下 SQL 语句,允许 root 用户从任何 IP 地址连接:

-- 允许 root 用户从任何 IP 地址连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

 

8. 备份和恢复

由于数据已经挂载到宿主机的 /mnt/mysql/data 目录中,你可以轻松地备份 MySQL 数据。以下是一个简单的备份命令示例:

docker exec mysql8 mysqldump -u root -pyourpassword --all-databases > /mnt/mysql/data/all_databases_backup.sql

 

# 进入 MySQL 容器
docker exec -it mysql_container bash

# 使用 mysqldump 备份所有数据库
mysqldump -u root -p --all-databases > /var/lib/mysql/backup_all_databases.sql

# 或者备份单个数据库
mysqldump -u root -p your_database_name > /var/lib/mysql/backup_your_database.sql

 

恢复数据时,使用以下命令:

docker exec -i mysql8 mysql -u root -pyourpassword < /mnt/mysql/data/all_databases_backup.sql

 

 

 

 

 

https://blog.csdn.net/u013737132/article/details/145654283

posted @ 2025-03-12 15:59  wq9  阅读(131)  评论(0)    收藏  举报