记录docker 搭建mysql的一个坑

运行容器:

docker run --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

发现navicat访问不了,需要配置远程访问?

解决方法:

去docker容器中配置mysql:

docker exec -it mysql bash 

输入刚刚的用户密码:

mysql -uroot -p123456

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

 

避坑:注意是'root'@'%',不是'root'@'localhost' 

避坑2:注意端口占用情况,netst -ano | findstr 3306 

<think>好的,我现在需要帮用户解决如何使用Docker搭建MySQL主从复制的问题。首先,我得回忆一下相关步骤,可能需要先创建两个容器,一个作为主节点,另一个作为从节点。然后配置主节点的my.cnf文件,设置server-id和log-bin。接下来,重启主节点容器,创建用于复制的用户并授权。之后,配置从节点的my.cnf,同样设置不同的server-id。然后进入从节点的MySQL,使用CHANGE MASTER TO命令连接到主节点,指定主机地址、用户、密码、日志文件和位置。最后启动从节点的复制进程,检查状态。 不过,用户提供的引用中有一些细节需要注意。比如引用3提到了使用Docker命令运行主节点容器,映射端口、卷和环境变量。引用4提到了在从节点执行CHANGE MASTER TO时可能需要使用容器名称作为MASTER_HOST,并且要确保主从容器在同一个网络里。另外,主节点需要创建用户并授权复制权限,如引用2和4所述。还有,重启容器后配置生效,如引用1和2中的重启步骤。 可能需要分步骤详细说明,包括主节点的配置、从节点的配置、连接主从的步骤以及验证方法。同时要注意版本兼容性,比如5.7和8.0是否有差异,但用户提到引用2有详细步骤,可能可以建议用户参考。此外,用户可能容易出错的地方,比如server-id重复、日志文件位置错误,或者网络连接问题,需要提醒注意。最后,生成相关问题,比如性能优化、常见问题解决等。</think>### 使用 Docker 搭建 MySQL 主从复制教程 #### 一、主节点配置 1. **创建主节点容器** 运行以下命令启动主节点容器,映射端口、配置数据卷并设置密码: ```bash docker run -d -p 3307:3306 --name mysql-master \ -v /opt/mysql-master/conf:/etc/mysql/conf.d \ -v /opt/mysql-master/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ --privileged=true mysql:5.7 ``` 此处通过数据卷挂载自定义配置文件(`my.cnf`)[^3]。 2. **配置主节点文件** 在宿主机 `/opt/mysql-master/conf` 目录下创建 `my.cnf`,添加以下内容: ```ini [mysqld] server-id=1 log-bin=mysql-bin ``` 重启容器使配置生效: ```bash docker restart mysql-master ```[^2] 3. **创建复制用户** 进入主节点 MySQL 执行: ```sql CREATE USER 'slave'@'%' IDENTIFIED BY 'slave'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; FLUSH PRIVILEGES; ``` 查看主节点状态,记录 `File` 和 `Position` 值: ```sql SHOW MASTER STATUS; ```[^4] --- #### 二、从节点配置 1. **创建从节点容器** 运行命令启动从节点容器(注意端口和数据卷路径差异): ```bash docker run -d -p 3308:3306 --name mysql-slave \ -v /opt/mysql-slave/conf:/etc/mysql/conf.d \ -v /opt/mysql-slave/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ --privileged=true mysql:5.7 ``` 2. **配置从节点文件** 在从节点配置目录中添加 `my.cnf`: ```ini [mysqld] server-id=2 ``` 重启容器:`docker restart mysql-slave`[^1]。 --- #### 三、主从连接 1. **设置从节点同步参数** 进入从节点 MySQL 执行: ```sql CHANGE MASTER TO MASTER_HOST='mysql-master', -- 若容器在同一网络,可使用容器名称 MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000001', -- 主节点记录的File值 MASTER_LOG_POS=154; -- 主节点记录的Position值 ``` 启动同步: ```sql START SLAVE; ``` 2. **验证同步状态** 执行 `SHOW SLAVE STATUS\G`,确认: - `Slave_IO_Running` 和 `Slave_SQL_Running` 均为 `Yes` - `Last_IO_Error` 无报错 --- #### 四、测试数据同步 在主节点创建数据库或插入数据,观察从节点是否自动同步。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值