Ich habe gerade einen neuen Ubuntu-Server mit MySQL (Percona 5.5) installiert, der jedoch keine Verbindungen von Remote-Hosts akzeptiert
Folgendes passiert, wenn ich versuche, eine Remoteverbindung zu diesem Server herzustellen:
mysql -h10.0.0.2 -uroot -pmypassowrd
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.2' (111)
telnet 10.0.0.2 3306
Trying 10.0.0.2...
telnet: Unable to connect to remote host: Connection refused
Als ich überprüfte, ob MySQL Remoteverbindungen abhört, sah ich Folgendes:
sudo netstat -ntlup | grep mysql
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 127018/mysqld
Wie Sie sehen können, 127.0.0.1:3306
heißt es "Ich akzeptiere nur lokale Verbindungen".
Ich habe meine skip_networking
und bind-address
Variablen überprüft - alles ist ausgeschaltet:
mysql> show variables like '%skip_networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%bind%';
Empty set (0.00 sec)
Ich habe einen anderen Server mit absolut der gleichen Konfiguration und es funktioniert großartig:
sudo netstat -ntlup | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2431/mysqld
Was kann der Grund dafür sein? Wie kann ich MySQL auf Remoteverbindungen reagieren lassen?
bind_address
erst seit Version 5.6 verfügbar ist ( bugs.mysql.com/bug.php?id=44355 ), sodass in Version 5.5 ein leerer Satz zurückgegeben wird, auch wenn dieser festgelegt ist.Antworten:
Versuchen Sie
bind-address = 0.0.0.0
, Ihren[mysqld]
Abschnitt zu erweiternmy.cnf
und mysqld neu zu starten .quelle
/etc/mysql/mysql.conf.d/mysqld.cnf
Dies könnte an der Benutzertabelle der MySQL-Datenbank liegen (verwenden Sie MySQL; show tables;). Wenn die Bindung an 0.0.0.0 für Sie nicht funktioniert, geben Sie Ihrem Benutzer den Host '%' anstelle von 'localhost' in dieser Tabelle.
Versuchen Sie beispielsweise, einen Benutzer wie folgt zu erstellen:
Ameise versuchen, sich mit diesem Benutzer zu verbinden.
quelle
Wenn alles andere fehlschlägt und Sie sicher sind, dass der Server den Standardport überwacht und Sie versuchen, verzweifelt von einem anderen Host aus eine Verbindung mit dem MySQL-Client herzustellen, versuchen Sie, den Port in der URL des MySQL-Befehls anzugeben.
Seltsamerweise musste ich die folgende Syntax verwenden:
Ich habe dies (Fehler?) Ganz zufällig gefunden (nachdem ich meine Haare verloren habe :)).
Mein Setup: Debian Jessie, frisches MySQL 5.7.18, Benutzer / Datenbank erstellt, Bindungsadresse auskommentiert, MySQL neu gestartet
quelle
Ich hatte gerade dieses Problem und mein Problem schien mit der Firewall zu tun zu haben. Übrigens - Vielen Dank an @Temnovit für die MySQL-Befehle zur Fehlerbehebung.
Ich habe netstat verwendet, um festzustellen, ob der Server ausgeführt wird und sich am richtigen Port befindet. Mit einem einfachen Telnet-Befehl konnte ich auch feststellen, dass mein Server keine Verbindungen an diesem Port akzeptiert.
Nach einer weiteren hilfreichen Antwort auf Fedora-Firewall-Befehle konnte ich die richtigen Ports öffnen.
Mein Telnet-Befehl war dann erfolgreich.
Wenn Sie immer noch Probleme haben, liegt wahrscheinlich ein Problem mit den Benutzerberechtigungen vor.
quelle
Ich habe
mariadb
installiert. Die soulution war das zu ändern ,bind-address
sich an/etc/mysql/mariadb.conf.d/50-server.cnf
quelle
Die im folgenden Link beschriebene Lösung sollte Ihr Problem lösen: http://www.debianhelp.co.uk/remotemysql.htm
quelle