Phpmyadmin kann nicht als root eingegeben werden (MySQL 5.7)

66

Ich verwende Ubuntu Desktop 16.04 (von 15.10 aktualisiert).

Ich hatte phpmyadmin von von installiert apt-get install phpmyadmin. Es funktioniert, wenn ich gehe, localhost/phpmyadminaber 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, Benutzer und Passwort durch 'root' und '' (leer für Passwort) zu ersetzen. Aber meine config.inc.phpist anders als ihre. Zum Beispiel gibt es in meiner Datei keine Zeile für Benutzer und Passwort und es scheint, dass es automatisch aus einer anderen Datei stammt, die ist /etc/phpmyadmin/config-db.php. 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

Mostafa Ahangarha
quelle
Welche MySQL-Version?
Rael Gugelmin Cunha
Die Frage wurde aktualisiert
Mostafa Ahangarha
Die einfache Weg sucht Login und PaTHword in /etc/mysql/debian.cnf - Ubuntu 16.04
cl-r

Antworten:

127

MySQL 5.7 hat das sichere Modell geändert: Jetzt rooterfordert die Anmeldung bei MySQL a sudo.

Dh, wird phpMyAdmin sein nicht die Lage zu verwenden rootAnmeldeinformationen.

Die einfachste, sicherste und dauerhafteste 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 ein echtes Passwort

In den folgenden Schritten verwende ich some_passals Beispiel ein Passwort. BITTE ERSETZEN SIE ES DURCH IHR PASSWORT! NICHT SOME_PASSALS PASSWORT VERWENDEN!

3. Erstellen Sie einen Benutzer für phpMyAdmin

Führen Sie die folgenden Befehle aus (ersetzen Sie sie some_passdurch 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.

4. Optional und unsicher: Remoteverbindungen zulassen

Denken Sie daran : Die Berechtigung eines Remotebenutzers für alle Berechtigungen ist ein Sicherheitsrisiko, das in den meisten Fällen nicht erforderlich ist.

Wenn Sie möchten, dass dieser Benutzer bei Remoteverbindungen über dieselben Berechtigungen verfügt, führen Sie in diesem Zusammenhang zusätzlich Folgendes aus (ersetzen Sie dies some_passdurch das in Schritt 2 verwendete Kennwort):

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

5. Aktualisieren Sie phpMyAdmin

sudoBearbeiten Sie mithilfe von die /etc/dbconfig-common/phpmyadmin.confDatei, und aktualisieren Sie die Benutzer- / Kennwortwerte in den folgenden Abschnitten (ersetzen Sie sie some_passdurch 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'
Rael Gugelmin Cunha
quelle
2
Ich werde nachforschen. Als Workaround für in der Zwischenzeit können Sie einen neuen Benutzer hinzufügen und alle Berechtigungen erteilen und diese dann zur Konfigurationsdatei phpmyadmin hinzufügen.
Rael Gugelmin Cunha
9
Ich muss lieben, dass MySQL nach Upgrades immer wieder kaputt geht. War glücklich mit root in meiner Workbench und jetzt scheint es die einzige Lösung zu sein, "sudo mysql" in der Befehlszeile zu erstellen, einen neuen Benutzer zu erstellen, alle gleichen Berechtigungen zu gewähren und diese in Workbench zu verwenden. Blöd.
Andris
3
@MostafaAhangarha Nach einer Untersuchung stellte ich fest, dass ein leeres Passwort zulässig ist, der rootBenutzer jedoch immer die sudoVerwendung auf 5.7 verlangte . Daher habe ich die Antwort aktualisiert, um einen neuen Benutzer mit allen Berechtigungen zu erstellen.
Rael Gugelmin Cunha
3
@Andris Dies zwingt die Leute dazu, MySQL sicherer zu nutzen. Es ist niemals eine gute Idee, dem Root-Benutzer in Ihrer Datenbank zu erlauben, sich trotzdem ohne Passwort anzumelden. Auf einem lokalen Entwicklungscomputer mag das in Ordnung sein, auf einem Server ist es jedoch sehr gefährlich.
Dan
2
@Dan - das ist meine größte Beschwerde - hat meine lokale Entwicklungsumgebung beschädigt, nachdem ich ohne Vorwarnung auf Ubuntu 16.04 aktualisiert habe. Ich habe nichts dagegen, dass solche Dinge die Standardeinstellung für Neuinstallationen sind, könnte aber zumindest fragen, bevor ich ein Update installiere.
Andris
10

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 deinstallieren möchten mariaDB:

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, jetzt, wenn Sie Raels Anweisungen folgen, können Sie sich einloggen phpmyadmin, aber zumindest für mich konnte ich keine neuen Datenbanken erstellen, da eine rote Meldung auftauchte: No privileges(oder eine ähnliche Meldung)

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.

Dan Costinel
quelle
1
Vielen Dank für Ihre Antwort. Aber war es nicht besser, nur den letzten Teil statt des Ganzen zu teilen? Ich denke, der Rest ist hier nicht nützlich?
Mostafa Ahangarha
@MostafaAhangarha Vielleicht ist der Beitrag etwas zu lang, aber ich möchte immer wissen, in welchem ​​Kontext eine Antwort gegeben wird.
Dan Costinel
Hat das Laufen sudo dpkg-reconfigure phpmyadmin irgendeine Verbindung zur Installation von Mariadb und zur Deinstallation von MySQL? Wenn ja, dann könnten Ihre Informationen nützlich sein (möglicherweise, weil Sie die Entfernung von mysql vorschlagen, das ist die Datenbank, die ich verwende und die ich verwenden werde). Wenn nicht, gibt es keinen Grund, es als Kontext anzugeben. Wenn ich falsch liege, mach mich korrekt.
Mostafa Ahangarha
2
Ich habe nur die Neukonfiguration verfolgt und jetzt funktioniert es.
Cwhisperer
Ist es eine gute Idee, kein Passwort für das Root-Konto zu haben?
kurdtpage
6

Ü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;
Syed Abdul Qadeer
quelle
Es wird bis zum nächsten MySQL- aptUpdate funktionieren . Das heißt, Sie müssen dies nach jedem MySQL-Update auf Ubuntu anwenden.
Rael Gugelmin Cunha
6

Wenn phpymadmin keine Verbindung herstellen kann, kann dies an dem auf eingestellten Authentifizierungsmechanismus liegen auth_socket. 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/

billynoah
quelle
3

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.

root@raspberrypi:# 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

FEUERFUCHS
quelle
1
Willkommen bei Ask Ubuntu! Ask Ubuntu ist nur für Ubuntu, bitte posten Sie keine Antworten über Raspbian (basierend auf Debian).
fosslinux
2
@ubashu Diese Lösung ist nicht Raspbian-spezifisch, sondern MariaDB-spezifisch.
Thomas Ward
Vielen Dank! Trotzdem gibt es keine Möglichkeit, eine neue Datenbank zu erstellen.
Gefahr89
2

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 phpmyadminals Benutzer zu arbeiten, nicht rootmit dem bekannten Passwort und es ließ mich rein.

plutesci
quelle
3
Du meinst, der Benutzername sollte "phpmyadmin" sein?
Mostafa Ahangarha
1
Ja, es hat bei mir
funktioniert
Und für mich, der ein Tutorial folgte, war das Passwort "some_pass" haha. Vielen Dank!
Marcelo Ágil
@ MarceloÁgil Ich habe in meine obige Antwort mehrere Warnungen eingefügt, in denen ich die Leute auffordere, some_passdurch ein echtes Passwort zu ersetzen !
Rael Gugelmin Cunha
1

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 hat, /etc/dbconfig-common/phpmyadmin.confsieht dies wie eine Sicherheitslücke für eine systemweite Aktion aus.

Ich würde also eher vorschlagen, was MariaDB 10.1.xdas angeht (some_user und some_pass sind alles, was Ihnen einfällt):

# 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

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

Antonio J. de Oliveira
quelle
0

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.

Hemamalini
quelle
-2

Wenn Sie MySQL separat installieren, stoppen Sie es mit dem folgenden Befehl: sudo / opt / lampp / lampp stop service mysql stop sudo / opt / lampp / lampp start

zouhair elhadraoui
quelle