it-swarm.com.de

SQLSTATE [HY000] [1698] Zugriff für Benutzer 'root' @ 'localhost' abgelehnt. Ich habe alles versucht

Ich habe gerade Ubuntu 16.04 installiert und den Webserver darauf installiert. Alles funktioniert gut, aber ich kann nicht auf die Datenbank zugreifen .. Ich habe alles im Internet ausprobiert, auch hier, aber nichts funktioniert. In PHP bekomme ich diesen Fehler:

SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost'

Wenn ich versuche, mich im Terminal anzumelden, funktioniert es, aber in PHP und phpmyadmin nicht. Bitte helfen.

PHP Code:

protected $Host = '127.0.0.1';
protected $db = 'dbname';
protected $name = 'root';
protected $pass = 'root';
protected $conn;
private static $settings = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
);

public function __construct() {
    try {
        $this->conn = new PDO("mysql:Host=$this->Host;dbname=$this->db", $this->name, $this->pass, self::$settings);
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}
22
lamka02sk

Es stellte sich heraus, dass Sie den Benutzer root in 5.7 nicht mehr verwenden können, ohne Sudoer zu werden. Das bedeutet, dass Sie nicht mehr mysql -u root ausführen können und stattdessen Sudo mysql -u root ausführen müssen. 

Das bedeutet auch, dass es nicht mehr funktioniert, wenn Sie den root-Benutzer in einer GUI verwenden (oder vermutlich eine andere Anwendung als Befehlszeile). Damit dies funktioniert, müssen Sie einen neuen Benutzer mit den erforderlichen Berechtigungen erstellen und stattdessen verwenden.

Siehe this answer für weitere Details.

62
Andris

Diese Schritte funktionierten für mich auf mehreren Systemen mit Ubuntu 16.04, Apache 2.4, MariaDB und PDO 

  1. melden Sie sich als root in MYSQL an

    mysql -u root
    
  2. Gewähren Sie Privilegien. Um einen neuen Benutzer auszuführen:

    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
    FLUSH PRIVILEGES;
    
  3. binden an alle Adressen:

    Am einfachsten ist es, die Zeile in Ihrer /Etc/mysql/mariadb.conf.d/50-server.cnf oder /etc/mysql/mysql.conf.d/mysqld.cnf-Datei auszulesen , abhängig davon, auf welchem ​​System Sie arbeiten:

    #bind-address = 127.0.0.1 
    
  4. beenden Sie Mysql und starten Sie Mysql neu

    exit
    service mysql restart
    

Standardmäßig wird nur an localhost gebunden. Wenn Sie die Zeile jedoch kommentieren, wird sie an alle gefundenen Schnittstellen gebunden. Das Auskommentieren der Zeile ist äquivalent zu bind-address = *.

So überprüfen Sie die Bindung des MySQL-Dienstes als root:

netstat -tupan | grep mysql
47
leopold

Vielleicht etwas spät, aber ich habe diese Antwort über das Internet gefunden. Es könnte anderen mit dem gleichen Problem helfen.

$Sudo mysql -u root
[mysql] use mysql;
[mysql] update user set plugin='' where User='root';
[mysql] flush privileges;
[mysql] \q

Jetzt sollten Sie sich als root in phpmyadmin anmelden können.

(Gefunden hier .)

21
Matematikisto

So erstellen Sie einen Benutzer für phpMyAdmin:

Sudo mysql -p -u root

Jetzt können Sie einen neuen MySQL-Benutzer mit dem Benutzernamen Ihrer Wahl hinzufügen.

CREATE USER 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD';

Und schließlich gewähren Sie dem Benutzer, den Sie gerade erstellt haben, Superuser-Berechtigungen.

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' WITH GRANT OPTION;

Bei Fragen hinterlassen Sie bitte einen Kommentar

4
rust

MySQL unterscheidet zwischen "localhost" und "127.0.0.1".

Möglicherweise ist 'root' @ 'localhost' nicht zulässig, da in der Benutzertabelle ein Eintrag vorhanden ist, der nur die Root-Anmeldung von 127.0.0.1 aus erlaubt.

Dies könnte auch erklären, warum eine Anwendung auf Ihrem Server eine Verbindung zur Datenbank herstellen kann, andere nicht, weil es unterschiedliche Möglichkeiten gibt, eine Verbindung zur Datenbank herzustellen. Und Sie erlauben es derzeit nicht durch "localhost".

2
adjepatatje

Benutzer für MySQL und für Server sind zwei verschiedene Dinge. Sehen Sie sich an, wie Sie Benutzer zur Datenbank hinzufügen und sich mit diesen Anmeldeinformationen anmelden

0
Autor69

Erstellen Sie einfach einen neuen Benutzer für MySQL. Verwenden Sie nicht root. Es gibt ein Problem mit der Sicherheit

Sudo mysql -p -u root

Melden Sie sich bei MySQL oder MariaDB mit Root-Rechten an

CREATE USER 'troy121'@'%' IDENTIFIED BY 'mypassword123';

einloggen und neuen Benutzer anlegen

GRANT ALL PRIVILEGES ON *.* TO 'magento121121'@'%' WITH GRANT OPTION;

und Zugriffsrechte gewähren "." und "@" "%" jeder Ort, nicht nur 'localhost'

exit;

wenn Sie Ihre Berechtigungstabelle anzeigen möchten, SHOW GRANTS; & Genießen.

0
SUNNETmedia

Mit mysql Ver 14.14 Distrib 5.7.22 lautet die Aktualisierungsanweisung jetzt:

update user set authentication_string=password('1111') where user='root';
0
sebastian.roibu