2017-05-30 247 views
1

我試圖連接到在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

回答

1

如果您使用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。非常感謝! –