今天升级到了mysql8.0 「做主」从同步遇到下面问题

2020-07-21T14:09:52.626718Z 13 [ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master 'slave_replication@172.20.0.2:3306' - retry-time: 60 retries: 1 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection. Error_code: MY-002061

简朴看了一下是mysql 用户的[平安加密方式的问题,特意看了一下mysql的用户表

plugin「列全部都是」caching_sha2_password。

而mysql5.7「支持的方式是」mysql_native_password

处置caching_sha2_password,详细注释如下:

  1. 使用加密毗邻
    2.使用支持 RSA 密钥对,举行密码交流的非加密毗邻

之前 change master to 时,未举行设置 master_ssl=1(等效于客户端 –ssl-mode=REQUIRED 的设置),导致从库通过复制用户毗邻主库时使用的非加密毗邻,同时又没有举行 RSA 〖密钥设〗置,导致 io 线程运行异常。为此整理一些关于 MySQL 8.0 认证插件 caching_sha2_password 的一些限制以及 RSA 的相关内容。
一、认证插件 caching_sha2_password

1.1 作用:

用于实现 SHA-256 认证

1.2 事情机制:

1)caching_sha2_password 会将用户名和用户密码哈希对作为缓存条‘目’举行缓存,当用户举行接见时,会跟缓存条‘目’举行匹配,若是匹配则认证乐成。

2)【若是插件】没有匹配到响“应的缓”存条‘目’,首先会凭据 mysql.user “系统表举行”校验,若是校验通过会天生响“应的缓”存条‘目’,下次相同用户举行接见时可以直接掷中缓存条‘目’,提升二次认证效率。若是校验失败,则认证失败、“接见”拒绝。

1.3 优势(相对于 sha256_password):

1)caching_sha2_password 认证插件在 MySQL 服务端举行缓存认证条‘目’,对于之前认证过的用户,可以提升二次认证的速率。

2)不管与 MySQL ‘链接的’ SSL ‘库若何’,《都可以使用基于》 RSA 的密码交流

3)提供了对使用 Unix 套接字文件和共享内存 协议的客[户端毗邻的支持

1.4 缓存治理:

1)当删除用户、修改用户名、修改用户密码、修改认证方式会清算相对“应的缓”存条‘目’

2)Flush Privileges 会消灭所有的缓存条‘目’

3)数据库关闭时会消灭所有缓存条‘目’

1.5 限制:

通过 caching_sha2_password 认证的用户接见数据库,只能通过加密的平安毗邻或者使用支持 RSA 密钥对举行密码交流的“非加密毗邻举行”接见。
二、caching_sha2_password 插件使用 RSA 秘钥对

2.1秘钥对天生方式:

1)『自动』天生

参数 caching_sha2_password_auto_generate_rsa_keys 默认是开启,数据库在启动时『自动』天生相对应的{公钥}和私钥。

2)手动天生

通过 mysql_ssl_rsa_setup 指定‘目’录天生 SSL 相关的私钥和证书以及 RSA 相关的{公钥}和私钥。

2.2 查看 RSA {公钥}值的方式:

通过状态变量 Caching_sha2_password_rsa_public_key 可以查看 caching_sha2_password 身份验证插件使用的 RSA {公钥}值。

2.3 使用 RSA 键值对的注意事项:

1)拥有 MySQL 服务器上 RSA {公钥}的客户端,可以在毗邻过程中与服务器举行基于 RSA 密钥对的密码交流

2)对于通过使用 caching_sha2_password 和基于 RSA 密钥对的密码交流举行身份验证的帐户,默认情况下,MySQL 服务端不会将 RSA {公钥}发送给客户端,获取 RSA 〖{公钥}的方式有以下两种〗:

A. 客户端从服务端拷贝响应的 RSA {公钥},

B. 客户端提议接见时,请求获取 RSA {公钥}。

在 RSA {公钥}文件可靠性能够保证的前提下,拷贝 RSA {公钥}跟请求获取 RSA {公钥}相比,由于减少了 c/s 之间的通讯,相对而言更平安。若是在 *** 平安前提下,后者相对来说会更利便。

2.4 命令行客户端通过 RSA 秘钥对举行接见:

1)通过拷贝方式获取RSA{公钥},在通过命令行客户端举行接见时,需要在命令行指定 –server-public-key-path 选项来举行接见

2)通过请求获取RSA{公钥}的方式,在通过命令行客户端举行接见时,需要在命令行中指定 –get-server-public-key 选项来举行接见。

选项 –server-public-key-path 优于 –get-server-public-key


“若是还想使用原”来的方式,则需要举行如下花样的修改

#重新修改用户密码平安加密方式
ALTER USER 'root'@'localhost'
  IDENTIFIED WITH mysql_native_password
  BY 'password';

    #刷新权限
    flush privileges;