it-swarm.com.de

Phpmyadmin kann nicht als root eingegeben werden (MySQL 5.7)

Ich verwende Ubuntu Desktop 16.04 (von 15.10 aktualisiert).

Ich hatte phpmyadmin von von apt-get install phpmyadmin installiert. Es funktioniert, wenn ich zu localhost/phpmyadmin gehe, aber ich kann mich nicht als root anmelden.

Ich habe viel danach gesucht. Ich habe viele Quellen gefunden, in denen vorgeschlagen wird, /etc/phpmyadmin/config.inc.php zu ändern und den Benutzer und das Passwort durch 'root' und '' (leer für Passwort) zu ersetzen. Aber mein config.inc.php unterscheidet sich von ihrem. Zum Beispiel gibt es in meiner Datei keine Zeile für Benutzer und Passwort und es scheint, als würde es automatisch von einer anderen Datei bezogen, die /etc/phpmyadmin/config-db.php ist. Trotzdem habe ich den Benutzer und das Passwort in dieser Datei geändert, aber jetzt erhalte ich diese Fehlermeldung:

#1698 - Access denied for user 'root'@'localhost'

Was sollte ich tun?


Phpmyadmin Version: 4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12, für Linux (x86_64) mit EditLine-Wrapper

62

MySQL 5.7 hat das sichere Modell geändert: Für die Anmeldung bei MySQL root ist jetzt ein Sudo erforderlich.

Das heißt, phpMyAdmin wird nicht in der Lage sein, root Anmeldeinformationen zu verwenden.

Die einfachste, sicherste und dauerhafte Lösung besteht darin, einen neuen Benutzer zu erstellen und die erforderlichen Berechtigungen zu erteilen.

1. Stellen Sie eine Verbindung zu MySQL her

_Sudo mysql --user=root mysql
_

2. Erstellen Sie einen Benutzer für phpMyAdmin

Führen Sie die folgenden Befehle aus (ersetzen Sie _some_pass_ durch das gewünschte Kennwort):

_CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
_

Wenn Ihr phpMyAdmin eine Verbindung zu localhost herstellt, sollte dies ausreichen.

3. Optional und unsicher: Remoteverbindungen zulassen

Denken Sie daran: Es ist ein Sicherheitsrisiko, einem entfernten Benutzer zu erlauben, alle Berechtigungen zu besitzen, und dies ist in den meisten Fällen nicht erforderlich.

Wenn dieser Benutzer bei Remoteverbindungen die gleichen Berechtigungen haben soll, führen Sie zusätzlich aus (ersetzen Sie _some_pass_ durch das in Schritt 2 verwendete Kennwort):

_CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
_

4. Aktualisieren Sie phpMyAdmin

Bearbeiten Sie mit Sudo die Datei _/etc/dbconfig-common/phpmyadmin.conf_, und aktualisieren Sie die Benutzer-/Kennwortwerte in den folgenden Abschnitten (ersetzen Sie _some_pass_ durch das in Schritt 2 verwendete Kennwort):

_# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'
_
123

Ich hatte das gleiche Problem bei der Verwendung von mariaDB mit phpmyadmin (Ubuntu 16.04LTS).

Voraussetzungen:

1) Installieren Sie MariaDB

Sudo apt-get -y install mariadb-server mariadb-client
Sudo mysql_secure_installation (answer to some interactive questions):
    Enter current password for root (enter for none): <enter>
    Set root password: n
    Remove anonymous users: n
    Disallow root login remotely: n
    Remove test database and access to it: n
    Reload privilege tables now: Y

Wenn Sie mariaDB deinstallieren möchten:

Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

2) Installieren Sie phpmyadmin

Sudo apt-get -y install phpmyadmin (and answer some interactive questions)
    Configuring phpmyadmin:
        Web server to reconfigure automatically: Apache2
        Configure database for phpmyadmin with dbconfig-common: Yes
        MySQL application password for phpmyadmin: <blank>

3) Erstellen Sie in Apache2 einen symbolischen Link zu phpmyadmin

Sudo ln -s /etc/phpmyadmin/Apache.conf /etc/Apache2/conf-available/phpmyadmin.conf
Sudo a2enconf phpmyadmin.conf
Sudo service Apache2 restart

Ok, nun, wenn du Raels Anweisungen folgst, kannst du dich in phpmyadmin einloggen, aber zumindest für mich konnte ich keine neuen Datenbanken erstellen, da eine rote Nachricht auftauchte: No privileges (oder eine ähnliche Nachricht)

Die Lösung bestand darin, phpmyadmin neu zu konfigurieren und einige interaktive Fragen zu beantworten.

Sudo dpkg-reconfigure phpmyadmin
<Ok>
Reinstall database for phpmyadmin: <Yes>
Connection method for MySQL database server for phpmyadmin: TCP/IP
Host name of the MySQL database server for phpmyadmin: localhost
Port number for the MySQL service: 3306
MySQL database name for phpmyadmin: phpmyadmin
<Ok>
MySQL username for phpmyadmin: root
MySQL application password for phpmyadmin: pass  # OR ANY PASSWORD YOU WANT
Password confirmation: pass
Name of the database's administrative user: root
Web server to reconfigure automatically: Apache2
An error occurred while installing the database: ignore

Wenn Sie nun versuchen, eine Verbindung mit phpmyadmin (localhost/phpmyadmin) herzustellen, verwenden Sie

username: root
password: pass

sie können Datenbanken erstellen.

10
Dan Costinel

Wenn phpymadmin keine Verbindung herstellen kann, liegt dies möglicherweise an dem auf auth_socket eingestellten Authentifizierungsmechanismus. Sie können es so ändern, dass ein normales Passwort verwendet wird:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password";

Ich hatte gerade Probleme damit, eine saubere Installation von Ubuntu 18.04 zu machen, und das hat dazu beigetragen, dass es funktioniert. Es gibt hier einen anständigen Artikel, der mehr erklärt:

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

6
billynoah

Überprüfen Sie in Ubuntu 16.04 für MySQL 5.7 die folgenden Tabelleninformationen und nehmen Sie die erforderlichen Einstellungen vor:

mysql>  SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
| phpmyadmin       | localhost | mysql_native_password |
| root             | %         | mysql_native_password |
+------------------+-----------+-----------------------+

Überprüfen Sie, ob root das Plugin auth_socket hat, und führen Sie den folgenden Befehl aus:

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
6

Der Vollständigkeit halber habe ich eine Lösung für meine Probleme bei der Verwendung von MariadB Version 10.1.23 gefunden. Die Syntax, die zum Einrichten eines neuen Benutzers verwendet wird, ähnelt der in dem obigen Beitrag von @Rael Gugelmin Cunha beschriebenen.

[email protected]:# Sudo mysql --user=root mysql
use mysql;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Grüße

3
FIRE FOX

Ich hatte das gleiche Problem, ich habe die meisten Ratschläge befolgt und nichts davon hat bei mir funktioniert! Mein Problem war dasselbe, als ich http: // localhost/phpmyadmin in meinem Browser öffnete und nach den Anmeldedaten fragte.

Ich habe root als Benutzer verwendet und das mir bekannte Passwort war korrekt. Und ich bekam

# 1698 - Zugriff für Benutzer 'root' @ 'localhost' verweigert

Alles, was es brauchte, war, phpmyadmin als Benutzer zu verwenden, nicht root, mit dem bekannten Passwort und ließ mich rein.

2
plutesci

Bezugnehmend auf Rael Cunha:

Ja, seine Lösung funktioniert, und ich habe andere ausprobiert. Wenn Sie sich jedoch auf einen Benutzer beziehen, der ein offengelegtes Kennwort in einer Konfigurationsdatei wie /etc/dbconfig-common/phpmyadmin.conf hat, erscheint dies als Sicherheitslücke für eine systemweite Aktion.

Also würde ich eher vorschlagen, was MariaDB 10.1.x betrifft (some_user und some_pass sind alles, was Sie sich einfallen lassen):

# mysql -u root
use mysql;
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

und belasse phpadmin setup (4) wie es ist.

Melden Sie sich anschließend mit Ihren eigenen Zugangsdaten bei phpmyadmin an

Bei meinen eigenen Setups ersetze ich aus Sicherheitsgründen das obige '%' durch 'localhost'. Wenn Sie jedoch Port 3306 auf Ihrem Server geschlossen haben, würde dies nicht unbedingt ein Sicherheitsrisiko für Sie darstellen.

Nur der folgende Code funktioniert für Ubuntu 18.04, PHP 7 und MySQL 5.7

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ersetzen Sie 'phpmyadmin' nicht. Das Erstellen eines anderen Benutzers hat keine vollständigen Berechtigungen wie das Erstellen eines neuen Benutzers. Weisen Sie diesem Benutzer auf diese Weise Datenbankberechtigungen zu. Nur phpmyadmin-Benutzer erhalten vollen Zugriff.

0
Hemamalini