通过SSH将localhost通信转发到生产计算机数据库

在Windows上,我使用Bitvise Tunnler通过SSH连接到我的服务器,然后从那里到mysqlserver:3306服务器数据库,从而使我个人电脑的本地主机上的所有通信量达到33306。

PC:33306 -> server:3306 -> databaseserver:3306 

现在我正在使用linux,我发现随时随地都可以使用SSH进行SSH连接:

 ssh [email protected] 

但是,我不知道如何使用ssh选项复制此端口转发。 如果只是从一台电脑到另一台电脑,我想我可以做这样的事情…

 ssh -L 33306:localhost:3306 [email protected] 

UPDATE

我曾尝试连接使用以下的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 

同样,stream程stream程应该如下所示:

 mypc -> server -> otherdbserveronprivatelan 

这应该做的:

ssh -L 33306:databaseserver:3306 [email protected]

它确实工作。 但是,在尝试连接时,我仍然使用“localhost”而不是“127.0.0.1”。

对于命令行ssh,这是

ssh -L 3333:mysqlhostname.youdomain.com:3306 [email protected]

然后,在mysql前端中打开连接到127.0.0.1端口3333.请注意,它必须是127.0.0.1,而不是本地主机,因为后者将使用UNIX域套接字。

http://blog.dreamhosters.com/kbase/index.cgi?area=2991

不是一个SSH问题,而是一个MySQL的问题。 对于MySQL,您需要确保用户已被授予对该数据库的访问权限。 这通常是通过以下方式完成的:

 GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host' IDENTIFIED BY 'password'; 

这里要注意的主要是'host'设置。 既然你是通过SSH隧道,你需要是'username'@'localhost'才能工作。 'username'@'%'的通配符设置不适用于本地主机连接。