背景
近期开发反馈有个账号连不上数据库,问什么时候发现连不上的,开发说今天才开始用,好家伙,环境给到开发一个月了,现在才开始使用,申请的时候说急急急,明天就要上线。那咱们看看为啥这个账号会连不上数据库吧。
看下数据库架构图
这里用了代理和中间件,链路有些长
经过分析
1、用应用账号直连数据库是可以连的 2、经过maxscale和haproxy 代理端口登陆是连不上,那基本可以断定是maxscale层出问题了,要么认证没有通过,要么密码错误。
疑问解答
1、如果maxscale配置的账号是带SSL协议认证的,在maxscale层是否需要配置SSL文件秘钥认证? 答:无需配置ssl文件路径因为也没有地方配置,但是如果是其他客户端登陆,则一定要带上SSL认证的路径文件,否则会报连接不上的问题。 2、maxscale 是否支持最新的密码认证插件 caching_sha2_password ? 答:不支持,支持旧的密码插件 mysql_native_password,所以创建用户的时候需要注意指定用旧的密码插件认证 3、关于maxscale上配置权限的问题,需要哪些权限才不会报错? 答:只需要以下权限即可,无需其他权限。 CREATE USER tmp_user@'192.168.%' IDENTIFIED WITH mysql_native_password BY 'xxxx' require x509; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SHOW_ROUTINE,SHOW DATABASES ON *.* TO `tmp_user`@`192.168.%`;4、SSL账号怎么登陆呢?
答:需要有client的key文件,至少需要2个文件(client-cert.pem,client-key.pem),比如:
mysql -utmp_user -pxxxxxx -h192.168.1.1 --ssl-cert=/tmp/CA_23431/client-cert.pem --ssl-key=/tmp/CA_23431/client-key.pem
作者公众号: