我正在尝试使用SSH隧道来访问运行在FreeBSD 10.1服务器上的MySQL服务器。 这些尝试是用Heidi SQL( http://www.heidisql.com/ )完成的。
FreeBSD服务器上的SSH守护进程不允许rootlogin。 我们必须首先使用轮组的帐户成员,然后SU才能成为根。
我想问题是:SSH守护进程是否需要允许rootlogin才能连接到MySQL服务器? 因为不pipe我尝试什么,MySQL服务器都在响应“访问被拒绝”。
HeidiSQL输出:
/* [SRV03 Live (SSH)] Connection to 127.0.0.1 closed at 2015-07-16 13:20:00 */ /* Connecting to 127.0.0.1 via MySQL (SSH tunnel), username ******, using password: No ... */ /* Attempt to create plink.exe process, waiting 4s for response ... */ /* C:\Program Files\Putty\plink.exe -ssh [email protected] -pw "******" -P 12345 -N -L 3307:127.0.0.1:3306 */ SELECT CONNECTION_ID(); /* Connected. Thread-ID: 1913 */ /* Characterset: utf8mb4 */ SHOW STATUS; SHOW VARIABLES; /* Entering session "SRV03 Devel (SSH)" */ /* Access is denied */
任何想法,将不胜感激。
谢谢,
你的问题很可能与MySQL有关。 HeidiSQL和FreeBSD最less。 你给了宝贵的小细节,但我们可以说:
误解:
您正试图将3种技术绑定在一起:MySQL,SSH隧道和HeidiSQL。
对于故障排除,您需要确认每个组件是单独工作的。 现在看来,你试图一次解决所有问题。 但是我们需要确定根本原因(不要与FreeBSD的“root”或MySQL“root”混淆:-))
FreeBSD的
当你尝试连接到MySQL服务器时,这是通过networking堆栈发生的。 如果你没有防火墙设置,那么你应该很好走。
但是如果你有一个防火墙(通常是“pf”),那么你可能需要允许访问本地主机(127.0.0.1)的端口3306(MySQL)。 如果你在监狱里跑步,情况尤其如此。 我假设你正在使用防火墙,因为你正在尝试隧道的stream量。 我注意到,你有SSH端口12345而不是22。
如果您对正确的防火墙设置有疑问,并且您正在使用可信networking,请在testing时禁用“pf”。 这会让你的生活变得更轻松!
MySQL的
validation您是否有一个正在工作的MySQL用户,并且可以使用本地networking连接来连接到数据库。
使用MySQL客户端访问MySQL数据库
mysql -u USERNAME –h 127.0.0.1 –p
-h是重要的,因为你使用TCP连接而不仅仅是一个命名pipe道。 validation您是否可以访问要使用的模式
mysql> USE databasename mysql> SELECT * FROM tablename LIMIT 10
HeidiSQL
如果你可以通过MySQL客户端连接,那么我们可以开始testingHeidiSQL。 如果FreeBSD服务器上没有防火墙,那么请确认您可以使用MySQL用户名和密码直接连接HeidiSQL。
如果你有一个防火墙,那么我会尝试从你的IP打开端口3306进行testing。 如果您使用“pf”然后使用下列之一:
pass in on $ext_if proto tcp from any to any port 3306 pass in on $ext_if proto tcp from YOURIPADDRESS to any port 3306
有了这个,你可以再次确认你可以正确地连接到HeidiSQL的MySQL而不需要隧道。 完成testing后,您可以删除此规则。
最后你可以手动启动隧道进行testing。 退出HeidiSQL并在命令提示符下input以下内容:
"C:\Program Files\Putty\plink.exe" -ssh [email protected] -pw "******" -P 12345 -N -L 3307:127.0.0.1:3306
这应该连接到你的FreeBSD服务器并build立一个隧道。 如果这是成功的,你可以启动HeidiSQL,并尝试正常连接到MySQL(但在端口3307)
以上是我将按照自己的步骤debugging问题的步骤。