好的,在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盒。我已经多次拆除并重新完成连接。 没有快乐。那么我做错了什么?
答案 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
...是您正在寻找的选项组合。