无法通过ssh连接到mysql

问题描述:

我试图连接到在CentOS(v 7.3.1611)端口3306上运行的MariaDB数据库(v 5.5.52) 出于安全原因,服务器的端口3306有防火墙(出telnet mysite.com 3306次)无法通过ssh连接到mysql

因为我可以ssh到服务器配置的连接: ssh projectx

,然后连接到数据库: mysql -u remote -p use staff;

我期待在续集专业这方面要得到我从我的笔记本电脑连接:

enter image description here

但我收到此错误信息:

Unable to connect to host 127.0.0.1, or the request timed out. MySQL said: Lost connection to MySQL server at 'reading initial communication packet', system error: 0

用户有这些赠款: show grants for 'remote'@'%'; +----------------------------------------------------------------------------------+ | Grants for [email protected]% | +----------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'remote'@'%' IDENTIFIED BY PASSWORD 'redacted' | | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `staff`.* TO 'remote'@'%' | +----------------------------------------------------------------------------------+

和我有这的[mysqld ]部分my.cnf bind-address = *

没有错误ors登录/var/log/mariadb/mariadb.log

+0

您确定您的软件**实际使用**〜/ .ssh/config吗? // Nevermind - 它看起来确实如此:https://sequelpro.com/docs/get-started/get-connected/remote – Xatenev

+0

@Xatenev好想,但是,是的,我已经连接到这样的其他服务器没有问题。 –

+1

你写了'你可以使用配置的配置ssh进入服务器'=>这是否意味着你正在尝试连接到第三方服务器?在这种情况下,MysQL主机127.0.0.1将是错误的,应该被服务器IP取代(我认为至少? - 不是100%确定的)。 – Xatenev

如果您使用SSH连接,则不需要定义远程用户@'%'。您也不需要绑定除127.0.0.1之外的任何接口,因为您本质上是从本地计算机连接的。

无论如何,bind-address应该127.0.0.在你的情况下(用于连接本地主机)。为了让MySQL绑定到所有你需要的接口0.0.0.0(但是,如果你使用ssh,这不需要)。

还要确保MySQL配置为使用TCP而不是本地unix套接字。尝试进入机器并运行mysql -h 127.0.0.1 ...。如果这不起作用并且mysql -h localhost工作,服务器被设置为使用unix套接字。

远程守护进程sshd必须设置为允许端口转发。将以下内容添加到/etc/ssh/sshd_config

AllowTcpForwarding yes 
+0

我可以ssh进入并成功连接到'mysql -h 127.0.0.1 -u remote -p',我也创建并尝试了“较窄”用户'remote'@'127.0.0.1'但没有成功。 –

+0

你可以试一下'ssh -L 3306:localhost:3306 user @ remote-server'吗?然后尝试在你的机器上本地连接mysql -h 127.0.0.1 ...。这将连接转变为本地3306端口以连接到远程的3306端口。这是Sequel Pro在幕后做的事情。 – nimrodm

+0

我得到了同样的错误,但这次有一个错误号:'错误2013(HY000):在'读取初始通信数据包'时丢失了与MySQL服务器的连接,系统错误:0'我可以Google。非常感谢! –