MySQL 5.1.31 unter Windows XP.
Vom lokalen MySQL-Server (192.168.233.142) kann ich wie folgt eine Verbindung als Root herstellen:
>mysql --host=192.168.233.142 --user=root --password=redacted
Auf einem Remotecomputer (192.168.233.163) kann ich sehen, dass der MySQL-Port geöffnet ist:
# telnet 192.168.233.142 3306
Trying 192.168.233.142...
Connected to 192.168.233.142 (192.168.233.142).
Wenn ich jedoch versuche, vom Remote- Computer aus eine Verbindung zu MySQL herzustellen , erhalte ich Folgendes:
# mysql --host=192.168.233.142 --user=root --password=redacted
ERROR 1045 (28000): Access denied for user 'root'@'192.168.233.163' (using password: YES)
Ich habe nur 2 Einträge in mysql.user:
Host User Password
--------------------------------------
localhost root *blahblahblah
% root [same as above]
Was muss ich noch tun, um den Remotezugriff zu aktivieren?
BEARBEITEN
Wie von Paulo unten vorgeschlagen, habe ich versucht, den Eintrag mysql.user für% durch einen IP-spezifischen Eintrag zu ersetzen, sodass meine Benutzertabelle jetzt folgendermaßen aussieht:
Host User Password
------------------------------------------
localhost root *blahblahblah
192.168.233.163 root [same as above]
Ich habe dann den Computer neu gestartet, aber das Problem besteht weiterhin.
PASSWORD
das Kontopasswort ersetzen . Ich habe versucht , die nur über WechselUSERNAME
undIP
es nicht für mich arbeiten , bis ich geändertPASSWORD
.Ich habe den gleichen Fehler erhalten, nachdem ich den Remotezugriff gewährt habe, bis ich Folgendes gemacht habe:
Von
/etc/mysql/my.cnf
In neueren Versionen von MySQL ist der Speicherort der Datei
/etc/mysql/mysql.conf.d/mysqld.cnf
(kommentieren Sie diese Zeile:
bind-address = 127.0.0.1
)Dann renne
service mysql restart
.quelle
bind-address
hat bei mir nicht funktioniert. Entwederbind-address = 0.0.0.0
oderbind-address = <server_ip>
funktioniert.Standardmäßig ist der Remotezugriff auf dem MySQL-Server deaktiviert. Der Prozess zum Bereitstellen eines Remotezugriffs für den Benutzer ist.
PATH
mysql -uroot -proot
(oder wie auch immer das root-Passwort lautet).mysql>
Hier ist IP die IP-Adresse, für die Sie den Remotezugriff zulassen möchten, wenn wir dies angeben
%
eine IP-Adresse angeben, auf die remote zugegriffen werden kann.Beispiel:
Dies für einen anderen Benutzer.
Hoffe das wird helfen
quelle
0 rows affected
die Norm ist :) Auchservice mysqld restart
wird am Ende empfohlen. [mysqld
ist manchmal nurmysql
]Paulos Hilfe führte mich zur Lösung. Es war eine Kombination der folgenden:
Die Bash-Shell behandelt das Dollarzeichen als Sonderzeichen für die Erweiterung auf eine Umgebungsvariable. Daher müssen wir es mit einem Backslash umgehen. Übrigens müssen wir dies nicht tun, wenn das Dollarzeichen das letzte Zeichen des Passworts ist.
Wenn Ihr Passwort beispielsweise "pas $ word" lautet, müssen wir von Linux bash aus wie folgt eine Verbindung herstellen:
quelle
mysql --host=192.168.233.142 --user=root --password='pas$word'
stackoverflow.com/a/6697781/500942Haben Sie eine Firewall? Stellen Sie sicher, dass Port 3306 geöffnet ist.
Unter Windows wird standardmäßig ein MySQL-Root-Konto erstellt, auf das nur von localhost aus zugegriffen werden darf, es sei denn, Sie haben die Option ausgewählt, den Zugriff von Remotecomputern während der Installation zu aktivieren.
Erstellen oder Aktualisieren des gewünschten Benutzers mit '%' als Hostname.
Beispiel:
quelle
Versuchen Sie es
flush privileges
erneut.Versuchen Sie, den Server neu zu starten, um die Zuschüsse neu zu laden.
Versuchen Sie, einen Benutzer mit dem Host "192.168.233.163" zu erstellen. "%" scheint nicht alle zuzulassen (es ist komisch)
quelle
CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION;
In meinem Fall habe ich versucht, eine Verbindung zu einem Remote-MySQL-Server unter Cent OS herzustellen. Nach vielen Lösungen (Gewähren aller Berechtigungen, Entfernen von IP-Bindungen, Aktivieren des Netzwerks) wurde das Problem immer noch nicht gelöst.
Wie sich herausstellte, stieß ich bei der Suche nach verschiedenen Lösungen auf iptables, wodurch mir klar wurde, dass der MySQL-Port 3306 keine Verbindungen akzeptierte.
Hier ist ein kleiner Hinweis, wie ich dieses Problem überprüft und behoben habe.
Überprüfen, ob der Port Verbindungen akzeptiert:
Telnet (MySQL Server IP) [PortNo]
Hinzufügen einer IP-Tabellenregel, um Verbindungen am Port zuzulassen:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Ich würde dies nicht für die Produktionsumgebung empfehlen, aber wenn Ihre iptables nicht richtig konfiguriert sind, kann das Problem durch Hinzufügen der Regeln möglicherweise immer noch nicht behoben werden. In diesem Fall sollte Folgendes getan werden:
Service Iptables stoppen
Hoffe das hilft.
quelle
Wenn Sie eine dynamische IP-Adresse verwenden, gewähren Sie nur Zugriff auf 192.168.2.%. Jetzt müssen Sie sich nicht mehr darum kümmern, jedes Mal Zugriff auf Ihre IP-Adresse zu gewähren.
quelle
Ich hatte Probleme mit der Remote-Anmeldung bei MYSQL für meine Amazon EC2 Linux-Instanz. Die Lösung bestand darin, sicherzustellen, dass meine Sicherheitsgruppe eine eingehende Regel für den MySQL-Port 3306 enthält, die meine IP-Adresse enthält (oder 0.0.0.0/0 für irgendwo). Sofort konnte ich eine Remoteverbindung herstellen, sobald ich diese Regel hinzugefügt habe.
quelle
Neuer Speicherort für die MySQL-Konfigurationsdatei ist
quelle
MySQL ODBC 3.51 Treiber ist, dass Sonderzeichen im Passwort nicht behandelt werden.
"Warnung - Bei MySQL ODBC 3.51 kann es zu ernsthaften Kopfschmerzen kommen, wenn das Kennwort in Ihrem GRANT-Befehl Sonderzeichen enthält, z. B.! @ # $% ^ ?. Der MySQL ODBC 3.51 ODBC-Treiber unterstützt diese Sonderzeichen im Kennwortfeld nicht. Die einzige Fehlermeldung, die Sie erhalten würden, ist "Zugriff verweigert" (mit Kennwort: JA) "- von http://www.plaintutorials.com/install-and-create-mysql-odbc-connector-on-windows-7/
quelle
Die Benutzer / Host-Kombination wurde möglicherweise ohne Kennwort erstellt.
Ich ging davon aus, dass beim Hinzufügen eines neuen Hosts für einen vorhandenen Benutzer (mithilfe einer GUI-App) das vorhandene Kennwort auch für die neue Benutzer / Host-Kombination verwendet wird.
Ich könnte mich mit anmelden
lokal, aber nicht von IPADDRESS mit
(Ich könnte mich tatsächlich von IPADDRESS aus anmelden, ohne ein Passwort zu verwenden.)
Festlegen des Passworts erlaubt den Zugriff:
quelle
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
der mich zu diesem Artikel führte: knowmysql.blogspot.com/2013/09/… Nachdem ich diese Schritte ausgeführt hatte, konnte ich endlich eine Verbindung zum Server herstellen.