Ich habe MySQL Community Edition 5.5 auf meinem lokalen Rechner installiert und möchte Remote-Verbindungen zulassen, damit ich mich von externen Quellen aus verbinden kann.
Wie kann ich das machen?
Ich habe MySQL Community Edition 5.5 auf meinem lokalen Rechner installiert und möchte Remote-Verbindungen zulassen, damit ich mich von externen Quellen aus verbinden kann.
Wie kann ich das machen?
Dies ist standardmäßig auf MySQL erlaubt.
Was standardmäßig deaktiviert ist, ist der entfernte root
-Zugriff. Wenn Sie das aktivieren möchten, führen Sie diesen SQL-Befehl lokal aus:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Suchen Sie dann die folgende Zeile und kommentieren Sie sie aus in Ihrer my.cnf
-Datei, die normalerweise auf Unix/OSX-Systemen in /etc/mysql/my.cnf
zu finden ist (In einigen Fällen befindet sich die Datei unter /etc/mysql/mysql.conf.d/mysqld.cnf).
Auf einem Windows-System finden Sie sie im MySQL-Installationsverzeichnis, normalerweise etwas wie C:\Program Files\MySQL\MySQL Server 5.5\
und die Datei heißt my.ini
.
Ändern Sie die Zeile
bind-address = 127.0.0.1
zu
#bind-address = 127.0.0.1
Und starten Sie den MySQL-Server neu (Unix/OSX und Windows), damit die Änderungen wirksam werden.
Nachdem ich all das oben Genannte getan hatte, konnte ich mich immer noch nicht als root
remote anmelden, aber das Telnetten zum Port 3306
bestätigte, dass MySQL
Verbindungen akzeptierte.
Ich begann, mir die Benutzer in MySQL anzusehen, und stellte fest, dass es mehrere root-Benutzer mit unterschiedlichen Passwörtern gab.
select user, host, password from mysql.user;
Also habe ich in MySQL
alle Passwörter für root erneut festgelegt und konnte mich schließlich remote als root
anmelden.
use mysql;
update user set password=PASSWORD('NEUESPASSWORT') where User='root';
flush privileges;
In meinem Fall versuchte ich, mich mit einem entfernten mysql-Server unter Cent OS zu verbinden. Nachdem ich viele Lösungen ausprobiert hatte (alle Berechtigungen gewähren, IP-Bindungen entfernen, Netzwerkaktivierung), wurde das Problem immer noch nicht gelöst.
Wie sich herausstellte, stieß ich beim Durchsuchen verschiedener Lösungen auf iptables, was mich erkennen ließ, dass der MySQL-Port 3306 keine Verbindungen akzeptierte.
Hier ist eine kurze Notiz dazu, wie ich dieses Problem überprüft und gelöst habe.
Überprüfen, ob der Port Verbindungen akzeptiert:
telnet (mysql server ip) [portNo]
IP-Tabellenregel hinzufügen, um Verbindungen auf dem Port zuzulassen:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Ich würde dies nicht für eine Produktionsumgebung empfehlen, aber wenn Ihre iptables nicht ordnungsgemäß konfiguriert sind, lösen das Hinzufügen der Regeln möglicherweise das Problem immer noch nicht. In diesem Fall sollte Folgendes durchgeführt werden:
service iptables stop
Hoffe, das hilft.
Alle Prozesse für die Remote-Anmeldung. Die Remote-Anmeldung ist standardmäßig deaktiviert. Sie müssen sie manuell für alle IPs öffnen, um allen IPs Zugriff zu gewähren
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Passwort';
Bestimmte IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'deine_gewünschte_ip' IDENTIFIED BY 'Passwort';
dann
flush privileges;
Sie können Ihren Benutzerhost und Ihr Passwort überprüfen
SELECT host, user, authentication_string FROM mysql.user;
Nun ist es Ihre Aufgabe, dies zu ändern
bind-adresse = 127.0.0.1
Sie finden dies unter
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Wenn Sie es dort nicht finden, versuchen Sie es damit
sudo nano /etc/mysql/my.cnf
Kommentieren Sie dies aus
#bind-adresse = 127.0.0.1
Dann starten Sie Mysql neu
sudo service mysql restart
Genießen Sie nun die Remote-Anmeldung
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.