![当使用 caching_sha2_password 时,如何安全地连接到 MySQL 8?](https://linux22.com/image/782433/%E5%BD%93%E4%BD%BF%E7%94%A8%20caching_sha2_password%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%AE%89%E5%85%A8%E5%9C%B0%E8%BF%9E%E6%8E%A5%E5%88%B0%20MySQL%208%EF%BC%9F.png)
我正在从我们的网站迁移到新主机。我们的数据库集群 (PCS) 现在运行 MySQL 8。我们有两个数据库服务器(活动和故障转移),它们都有一个浮动虚拟 IP,我们通过它们连接到 MySQL。
我们还在集群和另一台服务器之间运行复制(使用二进制日志)。我以与使用 MySQL 5.x 时相同的方式设置了复制,包括使用带有自签名 CA 和证书的 SSL。
一旦证书制作完成,我就在主服务器上使用此配置:
ssl
ssl-ca=/var/lib/mysql/ssl/ca.pem
ssl-cert=/var/lib/mysql/ssl/server-cert.pem
ssl-key=/var/lib/mysql/ssl/server-key.pem
复制现在在从服务器上运行良好。但是,当我尝试在命令行上(从活动数据库服务器)连接到 mysql 集群时,我收到以下错误:
ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
通过阅读这篇文章,我认为这是由于caching_sha2_password
现在是默认设置,并且文档说需要安全连接。我尝试了以下操作:
mysql --ssl-mode=DISABLED
这并没有什么区别。我还尝试更改用户:
mysql> ALTER USER 'root'@'db-01' IDENTIFIED WITH mysql_native_password BY 'passwordhere'
这也不起作用。到目前为止,我能够登录 MySQL 的唯一方法是删除 SSL。我发现我能像这样连接:
mysql --get-server-public-key
但我不确定这是否是最好的解决方案。
什么是以这种方式使用 SSL 时,使我的连接在 MySQL 8 中正常工作的最佳方法是什么?组成集群的数据库服务器、同一内部网络上的 Web 服务器以及外部(例如复制和远程数据库管理)都会有多个帐户。
答案1
我想知道您是否能够解决这个问题。我遇到了相同或类似的问题。这是我的 Reddit 帖子: https://www.reddit.com/r/mysql/comments/10pa60k/group_replication_and_ssl_configuring_issues/
任何建议都很好。谢谢。DD
答案2
经过漫长的挣扎,我终于找到了一个可以解决这个问题的设置。YMMV
我所要做的就是将以下行与其余的组复制设置一起添加到我的 mysql 配置文件中
group_replication_recovery_get_public_key = on
据我所知,这没有在任何地方记录。我只是在查看 mysql 变量时偶然发现的,希望能找到任何有用的东西。