mysql配置遇到的坑

mysql配置遇到的坑

版本

  • mysql 8.0.13

启动

docker run --name mysql -p 3306:3306 -v /Users/champly/go/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

问题一

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found 

解决

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

原因:当前版本mysql的加密方式不是mysql_native_password,修改为mysql_native_password即可

问题二

ERROR 1045 (28000): Access denied for user 'root'@'172.17.0.1' (using password: YES)

解决:

alter user 'root'@'%' identified by '123456';

原因 修改了加密方式之后要把密码修改回去

然后就可以连接了

<think>嗯,用户明确询问MySQL主从复制的配置教程。根据之前对话,用户可能是个需要搭建数据库高可用环境的技术人员。考虑到引用中提到的核心配置项(File和Position)正是主从复配制的关键验证点,说明用户真正需要的是可立即操作的落地指南。观察到用户引用内容包含server-id配置、中继日志等细节,但缺少实际操作中易错点的说明。比如从库连接主库时可能遇到的防火墙问题、binlog格式选择等。需补充这些隐性知识。准备把配置过程分解成主库操作、从库操作、同步策略三部分特别要强调:1主库创建账号时的权限语法(常有人遗漏REPLICATIONSLAVE权限)2锁表备份时如何避免业务中断(用--single-transaction参数)3GTID模式的配置差异(比传统文件+位置更方便)还需提醒避免主键冲突。见过不少案例因为表缺少主键导致复制异常,这个值得单独标注。最后配上状态检查命令,用"showslavestatus"的IO/SQL线程状态判活比看日志更直观。用户应该还关心后期维护:怎么处理主从延迟?突然断电如何修复复制?这些虽不属于"配置"范畴,但作为延伸问题提供。</think> 以下是清晰的MySQL主从复制配置教程,重点步骤已标注🔧: --- ### **主库(Master)配置** 1. **修改配置文件** ```bash vim /etc/my.cnf ``` 添加以下配置: ```ini [mysqld] server-id = 1 # 主库唯一ID log_bin = mysql-bin # 启用二进制日志 binlog-format = ROW # 推荐使用ROW格式[^1] ``` > 📌 注意:若需指定数据库复制,可添加 `binlog-do-db=db_name` 2. **重启服务并创建复制账号** ```bash systemctl restart mysqld mysql -u root -p ``` ```sql -- 创建复制专用账号 CREATE USER 'repl'@'%' IDENTIFIED BY 'Slave@123'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; ``` 3. **锁定数据库并获取关键信息** ```sql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; -- 记录 File (如 mysql-bin.000002) 和 Position (如 741) ``` | File | Position | |------------------|----------| | mysql-bin.000002 | 741 | --- ### **从库(Slave)配置** 1. **修改配置文件** ```bash vim /etc/my.cnf ``` ```ini [mysqld] server-id = 2 # 从库唯一ID(≠主库) relay-log = mysql-relay # 中继日志 read_only = ON # 推荐开启只读[^1] ``` 2. **重启服务并导入数据** ```bash systemctl restart mysqld # 使用mysqldump从主库导出数据(需提前解锁主库) mysqldump -u root -p --all-databases > master_db.sql scp master_db.sql slave_server:/tmp/ mysql -u root -p < /tmp/master_db.sql ``` 3. **启动主从复制** ```sql CHANGE MASTER TO MASTER_HOST = '192.168.1.100', -- 主库IP MASTER_USER = 'repl', MASTER_PASSWORD = 'Slave@123', MASTER_LOG_FILE = 'mysql-bin.000002', -- 主库SHOW MASTER STATUS结果 MASTER_LOG_POS = 741; START SLAVE; -- 启动复制 ``` --- ### **验证与监控** ```sql SHOW SLAVE STATUS\G; ``` ✅ **关键指标检查**: 1. `Slave_IO_Running: Yes` 2. `Slave_SQL_Running: Yes` 3. `Seconds_Behind_Master: 0` # 延迟秒数 > ⚠️ 常见错误处理: > - 若出现 `Last_IO_Error`:检查主从网络、账号权限 > - 若 `Last_SQL_Error`:主从数据冲突(如从库被误写) --- ### **故障恢复方案** ```sql -- 主从数据不一致时重建 STOP SLAVE; RESET SLAVE ALL; -- 重新导出主库数据后再配置 ``` --- ### **配置原理说明** | 组件 | 作用 | |---------------|-------------------------------| | Binary Log | 主库记录所有数据变更 | | Relay Log | 从库临时存储主库传来的日志 | | SQL Thread | 从库执行中继日志中的SQL语句 | | IO Thread | 从库拉取主库的二进制日志 | [^1]: 配置参数参考MySQL官方文档高可用章节。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值