it-swarm.com.de

Msgstr "Verbindung fehlgeschlagen: Zugriff für Benutzer 'root' @ 'localhost' (unter Verwendung des Kennworts: YES)" von der PHP - Funktion verweigert

Ich habe eine Funktion geschrieben, die von einer PHP-Webseite verwendet wird, um mit einer MySQL-Datenbank zu interagieren. Wenn ich sie auf meinem Server teste, erhalte ich folgende Fehlermeldung:

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

Ich kann sie auf meinem PC verwenden (mit XAMPP), und ich kann mithilfe der Befehlszeile im Server durch die Tabellen der Datenbank navigieren. Die Webseite kann jedoch keine Verbindung herstellen. Ich habe das Passwort geprüft, jedoch ohne Ergebnis. Es ist korrekt (sonst konnte ich mich nicht von der Kommandozeile aus bei mysql anmelden). 

Der Aufruf der Funktion ist folgender:

$conn = new mysqli("localhost", "root", "password", "shop");

Muss ich etwas auf meinem Server einstellen? Vielen Dank

Edit: PHP version 5.3.3-7 + squeeze1 Mysql version: 5.1.49-3 Beide auf debian

50
gc5

Ich habe das so gelöst: Ich habe mich mit root Benutzername angemeldet

mysql -u root -p -h localhost

Ich habe einen neuen Benutzer mit erstellt

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

dann habe ich die Datenbank erstellt

CREATE DATABASE shop;

Ich habe Berechtigungen für neue Benutzer für diese Datenbank erteilt

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

Dann habe ich root abgemeldet und einen neuen Benutzer angemeldet

quit;
mysql -u francesco -p -h localhost

Ich habe meine Datenbank mit einem Skript neu aufgebaut

source shop.sql;

Und das wars .. Jetzt funktioniert PHP ohne Probleme mit dem Anruf

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

Vielen Dank an alle für deine Zeit :)

68
gc5

Gibt es in der DB einen Benutzerkontoeintrag für root @ localhost? In MySQL können Sie verschiedene Benutzerkontoberechtigungen nach Host festlegen. Es können mehrere verschiedene Konten mit demselben Namen mit dem Host verbunden sein, mit dem sie sich verbinden. Die häufigsten sind [email protected] und root @ localhost. Diese können unterschiedliche Passwörter und Berechtigungen haben. Stellen Sie sicher, dass root @ localhost vorhanden ist und die erwarteten Einstellungen hat.

Ich bin bereit zu wetten, basierend auf Ihrer Erklärung, dass dies das Problem ist. Die Verbindung von einem anderen PC aus verwendet ein anderes Konto als root @ localhost und die Befehlszeile, von der ich denke, dass sie mit [email protected] verbunden wird.

10
queso

Nach dem, was Sie bisher gesagt haben, klingt es nach einem Problem, bei dem der MySQL-Treiber in PHP5.3 Probleme hat, eine Verbindung zur älteren MySQL-Version 4.1 herzustellen. Werfen Sie einen Blick auf http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx

Hier gibt es eine ähnliche Frage mit einigen nützlichen Antworten: Kann keine Verbindung zu MySQL 4.1+ mit alter Authentifizierung herstellen

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

Dies gibt 16 für Konten mit alten Kennwörtern und 41 für Konten mit neuen Kennwörtern zurück (und 0 für Konten ohne Kennwort, die Sie möglicherweise auch beachten sollten) . Verwenden Sie entweder die Tools zur Benutzerverwaltung des MySQL-Frontends (falls vorhanden) oder

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
6
Jack Murdoch

Ich hatte auch dieses Problem. Dies war jedoch aus einem anderen Grund. Mein Passwort begann mit dem Zeichen $... $MyPassword Ich habe es in #MyPassword geändert und das Problem ist gelöst.

3
LowLevel

SPITZE:

Kommentieren Sie die PID- und Socket-Datei aus, wenn Sie keine Verbindung mit dem Server herstellen können. linie es "sieht aus" an der falschen PID/Socket-Datei ...

### Kommentieren Sie die PID- und Socket-Datei aus, wenn Sie keine Verbindung zum Server herstellen können.
# pid-file =/var/run/mysql/mysqld.pid # socket =/var/lib/mysql/mysql.sock
0
Dutch Glory

Bearbeiten Sie Ihre Berechtigungen unter PHPmyAdmin (WAMP). Beachten Sie, dass Ihr Kennwort und Ihr Benutzername nicht erstellt wurden. Erstellen oder bearbeiten Sie es also, damit es mit Ihrer SQL-Verbindung in Ihrem PHP funktioniert. Hoffe, es funktioniert 

0
Adesina Yomi

Möglicherweise ist dort kein Passwort festgelegt und Sie übergeben ein Passwort als Argument. Versuchen Sie, das Kennwortargument während der Verbindung nicht anzugeben.

Höchstwahrscheinlich identifiziert es Ihren Benutzer nicht richtig. root @ localhost . Wählen Sie die Mysql-Version aus, die Ihr MAMP verwendet.

/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql

Ich habe tatsächlich einen Alias ​​auf meinem Computer geschrieben, sodass ich mich nicht daran erinnern muss, wie ich in das bin-Verzeichnis komme.

alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'

Damit kann ich das ausführen:

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

Sie können einen Alias ​​in Ihrem Bash-Profil ~/.bash_profile oder ~/.bash_rc speichern.

0
camdixon

Einfach.

Öffnen Sie das Xampp-Kontrollfeld -> Konfig -> Meine.ini-Bearbeitung mit Notepad. füge dies jetzt unter [mysqld] hinzu

skip-grant-tables

Sparen. Starten Sie Apache und MySQL.

Ich hoffe dir helfen

0
Miku jessi