首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCP ProxySQL和BasicDataSource连接池

GCP ProxySQL和BasicDataSource连接池
EN

Stack Overflow用户
提问于 2019-05-21 10:19:41
回答 1查看 351关注 0票数 3

我对java BasicDataSource连接池有一个问题。

我的ProxySql在我所有的DataProc计算引擎上都是正确配置的,如果我尝试用sqlclient连接到我的CloudSql实例,它就能正常工作。当我试图从连接池连接到我的CloudSql时,配置了以下连接字符串:CloudSql,我得到了以下错误:

代码语言:javascript
复制
Cannot create PoolableConnectionFactory (Access denied for user 'myuser'@'localhost' (using password: YES))
org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'myuser'@'localhost' (using password: YES))
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)

而且是正确的,因为proxySQL tcp连接位于127.0.0.1,而不是在本地主机(unix )上。

我不明白为什么BasicDataSource试图在本地主机上连接,而不是在我在连接字符串中配置的127.0.0.1上连接。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 00:58:16

字符串'myuser'@'localhost'指的是登录身份,而不是服务器连接字符串;例如,如果您从名为foo-instance的机器上运行连接尝试,即使使用指定远程IP地址的连接字符串,您的登录也将是'myuser'@'foo-instance'。虽然使用sqlclient的直接连接将根据指定的服务器主机名以不同的方式解析源主机名,但这是一个不应该依赖的怪癖。特别是,在您的示例中,ProxySQL服务将代表您行事,因此源主机名将来自ProxySQL实例,而不是来自连接字符串。

您可能希望共享有关ProxySQL配置的更多细节,但如果使用默认设置,则PROXYSQL_HOSTNAME将设置为localhost;您可以尝试确保将PROXYSQL_HOSTNAME设置为127.0.0.1

有趣的是,根据粗略的测试,创建由127.0.0.1标识的用户授权似乎对登录主机更有限制,而为localhost创建授权则同时允许127.0.0.1localhost用于连接主机名:

代码语言:javascript
复制
MariaDB [(none)]> create user 'dhuo'@'127.0.0.1' identified by 'dhuopass';
...
$ mysql -h localhost -pdhuopass
ERROR 1045 (28000): Access denied for user 'dhuo'@'localhost' (using password: YES)
$ mysql -h 127.0.0.1 -pdhuopass
Welcome to the MariaDB monitor.  Commands end with ; or \g.
...
MariaDB [(none)]> drop user dhuo@127.0.0.1
MariaDB [(none)]> create user 'dhuo'@'localhost' identified by 'dhuopass';
...
$ mysql -h localhost -pdhuopass
Welcome to the MariaDB monitor.  Commands end with ; or \g.
$ mysql -h 127.0.0.1 -pdhuopass
Welcome to the MariaDB monitor.  Commands end with ; or \g.

通常,最好将用户授权配置为来自localhost而不是127.0.0.1的用户授权,以获得支持任何一个入站主机名的最佳机会。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56236132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档