一、docker 启动MySQL容器实现数据持久化
要在 CentOS 7 上使用 Docker 启动 MySQL 8.0.33,并配置 MySQL 的 my.cnf 文件,同时实现 MySQL 数据的持久化,可以按照以下步骤进行操作:
1、安装 Docker:确保你在 CentOS 7 上已经安装了 Docker。如果尚未安装,请按照 Docker 官方文档提供的说明进行安装。
2、创建持久化存储目录:为了实现数据持久化,我们将创建一个用于存储 MySQL 数据的目录。假设我们将其命名为 /opt/mysql_data。在终端中运行以下命令来创建该目录:
sudo mkdir -p /opt/mysql_data
3、拉取 MySQL 镜像:运行以下命令从 Docker Hub 上拉取 MySQL 8.0.33 镜像:
sudo docker pull mysql:8.0.33
4、启动 MySQL 容器:运行以下命令启动 MySQL 容器,同时挂载持久化存储目录和自定义 my.cnf 文件:
需要提前手动新建/path/to/my.cnf文件,
----因为我有个性化的需求,需要将/path/to/my.cnf 文件中的设置为server_id=2(无此需求,可忽略)
启动docker 容器
sudo docker run -d --name mysql-container \
-v /opt/mysql_data:/var/lib/mysql \
-v /path/to/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3305:3306 \
mysql:8.0.33
- 将 /opt/mysql_data 替换为你创建的持久化存储目录路径。
- 将 /path/to/my.cnf 替换为我自定义的 my.cnf 文件路径。
- 将 your_password 替换为你要设置的 MySQL root 密码。
我的密码为 123456
/path/to/my.cnf
端口为3305
5、验证配置:等待片刻,MySQL 容器将启动并加载自定义的 my.cnf 文件。可以通过连接到 MySQL 容器来验证配置是否生效:
sudo docker exec -it mysql-container mysql -u root -p
输入之前设置的密码后,进入 MySQL 客户端。
密码为123456
6、在 MySQL 客户端中执行以下命令验证 server_id 配置是否已设置为 2:
SHOW VARIABLES LIKE 'server_id';
如果 server_id 的值为 2,则说明 my.cnf 中的配置已成功应用。
现在,MySQL 容器已经在 CentOS 7 上以持久化方式运行,并且使用了自定义的 my.cnf 配置文件,其中 server_id 的值为 2。
请注意,每次修改 my.cnf 文件后,都需要重启 MySQL 容器才能使更改生效:
sudo docker restart mysql-container
二、 设置MySQL容器支持远程访问
默认情况下,Docker 的容器网络使用桥接模式,因此容器内的服务只能通过容器的 IP 地址进行访问。你需要修改容器的防火墙规则,允许来自远程主机的连接。
**1、**进入docker-mysql容器,进入MySQL
sudo docker exec -it mysql-container mysql -u root -p
密码123456
2、重新设置一下密码
sql
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
3、刷新权限
sql
flush privileges;
4、开启远程访问并修改默认密码和加密方式
sql
alter user 'root'@'%' identified with mysql_native_password by 'root';
现在就可以远程连接了,使用服务的ip 地址,及3305端口号,账号 root 密码123456
记得服务器要对外开放3305端口哦