在 Windows 上,我曾经使用 Bitvise Tunnler 通过 SSH 连接将我电脑的 localhost:33306 上的所有流量转发到我的服务器 - 然后从那里转发到 mysqlserver:3306 服务器数据库。
PC:33306 -> server:3306 -> databaseserver:3306
现在我正在使用 Linux,我发现使用以下命令可以随时随地轻松地通过 SSH 进行连接:
ssh [email protected]
但是,我不确定如何使用 ssh 选项复制此端口转发。如果只是从一台计算机复制到另一台计算机,我想我可以这样做...
ssh -L 33306:localhost:3306 [email protected]
更新
我尝试使用以下 SSH 进行连接,并且连接似乎有效。
ssh -L 33306:localhost:3306 [email protected]
但是 phpMyAdmin 在尝试连接到其他服务器时抛出了此错误
#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)
然后我尝试
ssh -L 33306:db.server.com:3306 [email protected]
phpMyAdmin 抛出了这个错误
#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)
跑步netstat -an | 更多节目
tcp6 0 0 ::1:33306 :::* LISTEN
再次,流程应该是这样的:
mypc -> server -> otherdbserveronprivatelan
答案1
这应该可以:
ssh -L 33306:数据库服务器:3306[电子邮件保护]
答案2
它确实有效。但是,当我尝试连接时,我仍然使用“localhost”而不是“127.0.0.1”。
对于命令行 ssh,这是
ssh -L 3333:mysql主机名.youdomain.com:3306 [电子邮件保护]
然后,您在 mysql 前端打开到 127.0.0.1 端口 3333 的连接。请注意,它必须是 127.0.0.1,而不是 localhost,因为后者将使用 UNIX 域套接字。
答案3
这是不是不是 ssh 问题,而是 MySQL 问题。对于 MySQL,您需要确保用户已被授予该数据库的访问权限。这通常通过以下方式完成:
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host' IDENTIFIED BY 'password';
这里要注意的主要内容是'host'
设置。由于您是通过 SSH 建立隧道的,因此您需要 才能'username'@'localhost'
工作。通配符设置'username'@'%'
不适用于本地主机连接。