【问题标题】:ProxySQL user is not authenticated by MySQLProxySQL 用户未通过 MySQL 的身份验证
【发布时间】:2023-02-07 23:26:07
【问题描述】:

我有一个用于 ProxySQL 2.2.4 的容器和另一个用于 MySQL 8.0.31 的容器。两个容器都使用相同的网络名称。因此,我可以从 ProxySQL 容器访问在另一个容器中运行的 MySQL。

甚至,ProxySQL Admin 可以将 MySQL 服务显示为 ONLINE,并且 Admin 中的 ping/connect 没有错误。

ProxySQL 管理员>

select hostgroup,srv_port,status from stats_mysql_connection_pool;
hostgroup srv_port status
1 3306 ONLINE
1 3306 ONLINE

现在,当我从 ProxySQL 容器外部尝试运行以下命令以通过 proxySQL 访问 MySQL 服务时,它失败了。

注意:mysql 和 proxysql 端都存在用户“ravi”,密码相同。

$ sudo mysql -u ravi -pravi123 -h 0.0.0.0 -P16033   -e "SELECT @@port"
Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000) at line 1: Access denied for user 'ravi'@'172.18.0.2' (using password: YES)

容器中的 ProxySQL 日志显示:

2022-11-12 08:31:24 mysql_connection.cpp:1063:handler(): [错误] 1:mysql:3306 上的 mysql_real_connect() 失败,FD(Conn:42,MyDS:42),1045:访问被拒绝对于用户'ravi'@'172.18.0.2'(使用密码:YES)。

同一用户使用相同的密码从 ProxySQL 容器 shell 连接。

$ sudo docker exec -it proxysql bash

root@34c06973094d:/# mysql -u ravi -p -h mysql 输入密码: 欢迎使用 MariaDB 监视器。命令以 ; 结尾或\g。 您的 MySQL 连接 ID 是 4352 服务器版本:8.0.31 MySQL Community Server - GPL

版权所有 (c) 2000、2018、Oracle、MariaDB Corporation Ab 等。

输入“帮助;”或 '\h' 寻求帮助。输入'\c'清除当前输入语句。

MySQL [(无)]>

它背后的错误是什么?为什么 ProxySQL 不能对用户进行身份验证,而同一用户却能够从 shell 登录到 MySQL。

预期:用户应该能够使用 ProxySQL 运行 SQL 查询,ProxySQL 已经连接并且正在被监视,而不会出现连接和监视错误。

【问题讨论】:

  • 你的容器配置是什么?
  • 我有一个类似的设置,似乎你没有将用户ravi 添加到代理 sql 中。 proxysql 和 mysql 不共享相同的用户帐户。您需要在两者中创建帐户才能获得访问权限。或者我可能对文档感到困惑。但这就是我让它工作的方式

标签: mysql proxysql


【解决方案1】:

请验证您是否已将“ravi”用户添加到 proxysql 上的 mysql_users 表中,例如:

INSERT INTO mysql_users VALUES (username, password) ('ravi', 'super_secret_password') 

您可以在mysql_users 密码列中使用散列密码,但您必须使用MySQL 中的mysql_native_password 身份验证插件。否则,您将需要以明文形式输入密码。 (related GitHub issue)

之后,您将需要运行:

LOAD mysql users TO RUNTIME;
SAVE mysql users TO DISK;

这很重要,因为对 mysql_users 表的更改只有在将它们加载到运行时才会发生,并且在崩溃后不会持续存在,除非您将它们保存到磁盘。

请注意,您可以在 mysql_users 表中配置很多,请查看proxysql user configuration documentation 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2015-02-24
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多