【发布时间】:2018-03-02 19:42:30
【问题描述】:
我想通过具有“localhost”访问权限的用户通过 ssh 隧道连接到远程 MySQL。
我用这个做隧道:
ssh -f -N -L 33306:localhost:3306 user@remote-host
这个连接到主机:
mysql -h 127.0.0.1 -P 33306 -uuser -ppassword
我得到的错误是:
ERROR 1045 (28000): Access denied for user 'user'@'remote-host' (using password: YES)
问题是用户'user'@'remote-host'(或'user'@'%')不存在,只有'user'@'localhost'存在。
有没有办法强制远程主机,无需服务器端修改认为我来自本地主机?这是我无论如何都会通过 ssh 隧道进行连接的唯一原因。
注意:
如果我想用这个命令连接:
mysql -h localhost -P 33306 -uuser -ppassword
我得到这个错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
其他数据:
在 /etc/hosts 中的远程服务器上,值如下:
127.0.0.1 localhost
remote-ip remote-host
【问题讨论】:
-
这听起来很可疑。 MySQL 应该已经看到流量
user@127.0.0.1。建立隧道后可以通过telnet打开本地端口吗?telnet localhost 33306你应该看到类似<junk>q>~mysql_native_password -
@MichaelBerkowski 它说:[ales@host ~]$ telnet localhost 33306 Trying 127.0.0.1... 已连接到 localhost。转义字符是 '^]'。 4 5.0.75? *Q/5ZJBK2,W?uQv|.kS
-
@MichaelBerkowski 我们的系统管理员告诉我,这里的隧道对于绕过防火墙很有用(无需打开其他端口),但 mysql 用户 'user'@'%' 应该仍然存在。跨度>
-
@alesf 您是否确认您使用了正确的密码/用户名并且您有权连接到数据库?
-
@schadr 我怀疑我做到了,但两年多前我问过这个问题,我真的不知道我是如何解决的,或者我根本不知道。感谢您抽出宝贵时间。
标签: mysql ssh localhost tunnel