当使用 caching_sha2_password 时,如何安全地连接到 MySQL 8?

当使用 caching_sha2_password 时,如何安全地连接到 MySQL 8?

我正在从我们的网站迁移到新主机。我们的数据库集群 (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 变量时偶然发现的,希望能找到任何有用的东西。

相关内容