无法从CLI MySQL Linux客户端访问AWS RDS MySQL数据库; Navicat

时间:2015-07-13 18:39:30

标签: mysql linux amazon-web-services

好的,在AWS中设置MySQL RDS数据库。它不公开。如果我将Putty放入同一子网上的EC2盒子,我可以在启动Navicat时通过隧道访问数据库。

切换到Linux RedHat框(运行Percona 5.5.44)。 我想连接隧道到RDS DB,并在端口3308上本地可用(端口3306已经有本地MySQL数据库,3307 [备份])。

telnet localhost 3308

返回

Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

所以,没有什么,这是我所期待的。

运行SSH:

ssh -L 3308:blahblah.us-east-1.rds.amazonaws.com:3306 -i key.ssh user@AWS_EC2box.com -f -N

其中blahblah是RDS服务器,AWS_EC2是同一子网上的EC2服务器。

再次尝试telnet:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
N
5.6.23-logV[>e`3|9▒7{(SL_zgu7Rumysql_native_password

我知道我想要的数据库是运行MySQL 5.6.23,所以很可能这是我正在寻找的数据库。

现在尝试:

mysql -P 3308 -u testuser -p
Enter password:
ERROR 1045 (28000): Access denied for user 'testuser'@'localhost' (using password: YES)

无论我尝试哪个用户,使用密码,没有,将插件设置为mysql_old_password并使用Old_Password,任何事情都会失败。

但我可以在我的Windows PC上安装PuTTy和Navicat,每次都可以使用相同的用户,相同的密码。 PuTTy隧道使用相同的EC2盒,并转到相同的RDS盒。我已经多次拆除并重新完成连接。 没有快乐。那么我做错了什么?

1 个答案:

答案 0 :(得分:2)

错误消息中的'testuser'@'localhost'是赠品,您在此处所做的与您打算做的事情不同。

RDS 永远不会将您识别为来自localhost

此处的问题是您使用mysql-P)选项调用--port命令行客户端,而没有相应的-H--host)论点。如果没有--host--port将被忽略(这似乎没有文档记录,但如果您考虑一下则有意义 - 没有相关IP主机的IP端口没有任何明确定义的含义)。

您实际上是通过unix套接字连接到本地计算机。 (SET GLOBAL LOG_WARNINGS = 2;在您的本地MySQL实例上,您将在本地MySQL错误日志中看到这些失败的登录。)

$ mysql -H 127.0.0.1 -P 3308 -u testuser -p

...是您正在寻找的选项组合。