MySQL remote Verbindung schlägt fehl mit "unknown authentication method"
Ich versuche, Remote-Verbindung zum MySQL-server online von meiner lokalen Maschine, aber ich erhalte die folgende Fehlermeldung:
Warning: PDO::__construct(): The server requested authentication
method unknown to the client [mysql_old_password] in
C:\xampp\htdocs\ticket\terminal\sync.php
SQLSTATE[HY000] [2054] The server requested authentication method
umknown to the client
Meinem lokalen MySQL-server-version 5.5.27, libmysql - mysqlnd 5.0.10
Der remote-MySQL-server-version 5.5.23, die mysqlnd-version ist nicht ausgesetzt.
Ich denke, es ist eine inkompatible Kennwort-hash-Problem, aber ich weiß nicht, wie es zu lösen.
Unten ist ein Teil meiner Verbindung code
$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name';
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
try {
$online_dbh = new PDO($dsn, 'myusername', 'mypassword', $options);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Congratulations!";
} catch (PDOException $e) {
echo $e->getMessage();
}
- Es würde helfen, ist Sie angegeben, Linie 12
- Dieser arbeitete für mich : stackoverflow.com/a/22794125/1875434
- Das problem gelöst, indem Sie einen neuen Benutzer mit den gleichen Anmeldeinformationen.
- Verwandte: MySQL-PHP Inkompatibilität.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angenommen, Sie sind mit PHP 5.3+, könnten Sie erleben eine der Rückwärts Inkompatibilität Änderungen:
Wenn das so ist, sehen https://stackoverflow.com/a/1340538/187954 für Informationen zur Aktualisierung Ihres Passworts.
Ich überwand die Herausforderung.
Ich fand heraus, dass mein MySQL Datenbank-host verwendet immer noch die alte MySQL-Passwort-hash, der 16-byte -, während mein localhost Datenbank-server verwendet 41-byte-Passwort-hash. Ich habe folgende Abfrage, um zu finden, die die Passwort-Länge:
Habe ich meinen localhost Datenbank-server-Passwort-hash-bis 16-byte durch ausführen der folgenden Abfrage
Dann bearbeitete ich
my.ini
- Datei, und legen Sie dieold_password=1
um sicherzustellen, dass, wenn der server neu gestartet wird, es wird nicht zurückkehren, um die neue Passwort-system. Aber das hat nicht mein problem zu lösen.Ich herausgefunden, dass es war, dass PHP verarbeitet die Authentifizierung, da war ich mit
PHP
'sMySQL
API
, also ich herabgestuftPHP 5.2.8
und ich war in der Lage, um die remote-Verbindung erfolgreich.Ich hoffe, das jemand hilft.
set old_passwords=0
in Ihrer aktuellen Sitzung. Wenn das Passwort erneuert, PDO eine Verbindung herstellen kann, egal, der Wert von@@old_passwords
auf dem server.Dieser jemand kann helfen, mit diesem Problem. Dies ist, wie ich es fest in meine situation.
Aus der MySQL-PHP-API (PDO_MYSQL) website
/usr/local/etc/my.cnf
Ich lief in das gleiche problem und herausgefunden, das problem hatte ja mit PHP zu tun.
Die Lösung war einfach für mich: Wechsel zu mysqli anstelle von PDO. Bei der Verwendung von Zend_Db, das ist so einfach wie das ändern 1 Zeile:
Wird
Aber wenn Sie die Anwendung nicht mit der Zend_Db-Abstraktion (oder jede andere) Ebene, Sie könnten in Schwierigkeiten geraten.
Ich hatte dieses problem auf einem shared-hosting-service - (bluehost.com). Ich habe gerade einen reset der borking MySql-Benutzer-Passwort über das web-interface zur Verfügung gestellt von Bluehost. Ich wieder das alte Passwort ein zweites mal eingegeben es an der Schnittstelle und gespeichert und alles war wieder gut.
Ich habe dieses problem beim ausführen von bitbucket Rohrleitungen mit laravel 5.6 und die Standard-mysql-Datenbank (set-Dienste:).
Lösung war eine ältere version von mysql
PS: es war PHP 7.1
alter user 'username'@'localhost' identified mit mysql_native_password by 'Passwort'; würde es zu beheben.