我在计算机A上运行mysql,可以作为A~ $ mysql -u punkish -p database连接到它,依此类推。
我可以访问计算机B,该计算机上也运行着mysql。在设置了ssh密钥对的情况下,我可以通过端口2200 ssh进入B,一旦进入,我就可以像这样连接到数据库
A~ $ ssh -p 2200 punkish@B
B~ $ mysql -u punkish -p database但是,我想在我的计算机上通过ssh设置端口转发,这样我的计算机A上端口3307上对mysql的所有请求实际上都会发送到B上的端口3306。这将允许我使用gui程序,该程序想要连接到mysql,但不能通过隧道进行连接。因此,我执行以下操作
A~ $ ssh -p 2200 -L 3307:B:3306 punkish@B
B~ $上面的命令将我直接登录到B。我不确定隧道是否已建立,但我假设它已建立。但是,以下命令会失败(在另一个终端中
A~ $ mysql -P 3307 -u punkish -p
Enter password:
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES)有趣的是,我有另一个名为Sequel Pro的gui程序( Mac的桌面MySQL客户机),它可以通过ssh连接到mysql@B。所以我知道有些东西是有效的..。我只是不知道怎么做,所以我也许可以在另一个gui程序中启用它。
发布于 2011-07-09 03:21:28
如果您不指定主机名,mysql通常会尝试使用套接字文件。因此,作为mysql命令的一部分,指定-h 127.0.0.1 (注意,我没有说本地主机,它对它们的处理方式不同)。这基本上强制TCP连接,而不是套接字文件连接。
https://stackoverflow.com/questions/6629353
复制相似问题