Standardkennwort von MySQL in Ubuntu Server 16.04

72

Ich habe Ubuntu 16.04 Server installiert. Der MySQL-Server wurde standardmäßig darin installiert. Wenn ich versuche, mit mysql auf zuzugreifen mysql -u root -p, kann ich mich nicht bei mysql anmelden, da ich kein Passwort habe. Gibt es ein Standardkennwort?

Ich habe es auch mit versucht --skip-grant-tables, auch das funktioniert nicht. Selbst der Versuch, sich mit nur anzumelden, mysql -u rootist ein Fehler.

Debashisenator
quelle
1
Bitte genehmigen Sie die Antwort, mit der Ihre Anfrage gelöst wird, damit sie der Community hilft.
Shakti Phartiyal
1
Ich habe gerade eine neue WORKING- Antwort auf dieses Problem veröffentlicht. Keiner der anderen Ratschläge hat am 18.04 für mich funktioniert. stackoverflow.com/questions/33991228/…
Stewart
Mögliches Duplikat von Was ist das Standard-Root-Passwort für MySQL 5.7
Stewart
@ Debashisenator Wenn Sie meine Antwort als hilfreich empfinden, würde ich mich freuen, wenn Sie meine Antwort akzeptieren. Danke!
Maoz Zadok

Antworten:

110

Dies ist, wonach Sie suchen:
sudo mysql --defaults-file=/etc/mysql/debian.cnf
MySql unter Debian-basiertem Linux verwendet normalerweise eine Konfigurationsdatei mit den Anmeldeinformationen.

Maoz Zadok
quelle
91

Ich hatte eine Neuinstallation von mysql-serverUbuntu 18.10 und konnte mich nicht mit dem Standardkennwort anmelden. Dann habe nur ich erfahren, dass der Root-Benutzer standardmäßig mit authentifiziert ist auth_socket. Wie in der Antwort, als das Plugin geändert wurde, mysql_native_passwordkönnen wir das MySQL-Standardkennwort verwenden

$ sudo apt install mysql-server
$ sudo cat /etc/mysql/debian.cnf

Dort finden Sie die folgenden Zeilen

user     = debian-sys-maint
password = password_for_the_user

Dann:

$ mysql -u debian-sys-maint -p
Enter password: 

Geben Sie das Passwort aus debian.cnf ein

mysql> USE mysql
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 |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> COMMIT; 

Entweder:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Oder:

// Für MySQL 5.7+

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('new_password') where user='root';

--Aktualisieren--

Manchmal müssen Sie Ihren MySQL-Server neu starten.

sudo service mysql restart

oder

sudo systemctl restart mysql
Yasii
quelle
Sie sollten einige Details hinzufügen, was OP falsch gemacht hat und warum diese Lösung funktioniert
schu34
Sie sollten diesen Kontext als Bearbeitung zu Ihrer Antwort hinzufügen :)
schu34
3
Ich musste den MySQL-Server nach dieser Lösung neu starten. sudo service mysql restart
Tuxman
Diese Antwort ist die einzige Arbeit für mich, nachdem ich viele MySQL-Server-Pakete auf den neuesten Versionen von Ubuntu installiert habe. Vielen Dank.
Tuxman
Hat gut für mich funktioniert. Vielen Dank.
DomonLee
51

Mysql verfügt standardmäßig über das Authentifizierungs-Plugin des Root-Benutzers als auth_socket, bei dem der Systembenutzername und der Datenbankbenutzername identisch sein müssen.

Wenn Sie sich als root anmelden sudo -iund einfach mysqleingeben root, werden Sie als MySQL angemeldet. Anschließend können Sie andere Benutzer erstellen.

Wenn Sie keinen Root auf dem Host haben, sollten Sie sich wohl nicht als Root bei MySQL anmelden dürfen.

Harper
quelle
19

Sie können das Root-Passwort einfach zurücksetzen, indem Sie den Server mit --skip-grant-tables ausführen und sich ohne Passwort anmelden, indem Sie Folgendes als root oder mit sudo ausführen:

service mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

# service mysql stop
# service mysql start
$ mysql -u root -p
Shakti Phartiyal
quelle
3
Danach habe ich die Fehlermeldung "Plugin 'unix_socket' ist nicht geladen" erhalten. Lösung: stackoverflow.com/a/37879449/2934081 ( update user set plugin="mysql_native_password"; nach der update userZeile hinzufügen ).
Amichai Schreiber
1
Dies sollte die richtige Antwort sein, da die vorherigen abgeschrieben werden
Amorphous
16

Obwohl dies eine alte Frage ist, haben einige von uns immer noch Schwierigkeiten, eine Antwort zu finden. Zumindest habe ich das getan. Bitte befolgen Sie nicht alle langwierigen Lösungen . Sie können sich einfach als root bei mysql anmelden, ohne ein Kennwort anzugeben (vorausgesetzt, es handelt sich um eine Neuinstallation oder Sie haben das Kennwort seit Ihrer Installation nicht geändert), indem Sie sudo vor Ihrem Befehl mysql hinzufügen. $sudo mysql -uroot -p mysql> Dies liegt daran, dass MySQL das Sicherheitsmodell in einer der neuesten Versionen geändert hat.

Hoffe das hilft

BeNiza
quelle
12

Beachten Sie, dass in Ubuntu-Systemen, auf denen MySQL 5.7 (und spätere Versionen) ausgeführt wird, der MySQL-Root-Benutzer so eingestellt ist, dass er sich standardmäßig mit dem auth_socket-Plugin und nicht mit einem Kennwort authentifiziert. Sie müssen die Authentifizierungsmethode von auth_socket auf mysql_native_password umstellen

Wie @BeNiza sagte, haben sie das Sicherheitsmodell geändert. Ich habe die folgenden Schritte ausgeführt und es funktioniert für MySQL 5.7.27 unter Ubuntu 18.04

sudo apt install mysql-server

Die MySQL-Datenbanksoftware ist jetzt installiert, ihre Konfiguration ist jedoch noch nicht abgeschlossen.

Um die Installation zu sichern, wird MySQL mit einem Skript geliefert, das fragt, ob wir einige unsichere Standardeinstellungen ändern möchten. Starten Sie das Skript, indem Sie Folgendes eingeben:

sudo mysql_secure_installation

Sie sollten bei jeder Eingabeaufforderung Ydie ENTERTaste drücken und drücken.

Dies führt zu Problemen, wenn Sie ein schwaches Kennwort verwenden

Sie können sich einfach als root bei mysql anmelden, ohne ein Kennwort anzugeben, indem Sie sudo vor Ihrem mysql-Befehl hinzufügen.

sudo mysql

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';

Wenn Sie ein schwaches Passwort festlegen, wird der folgende Fehler angezeigt:

FEHLER 1819 (HY000): Ihr Passwort entspricht nicht den aktuellen Richtlinienanforderungen

mysql> FLUSH PRIVILEGES;

mysql> exit

Hinweis: Nachdem Sie Ihren Root-MySQL-Benutzer für die Authentifizierung mit einem Kennwort konfiguriert haben, können Sie mit dem zuvor verwendeten Befehl sudo mysql nicht mehr auf MySQL zugreifen. Stattdessen müssen Sie Folgendes ausführen: mysql -u root -p

Nachdem Sie das gerade festgelegte Passwort eingegeben haben, wird die MySQL-Eingabeaufforderung angezeigt.

AmirRezaM75
quelle
Danke, du hast meinen Tag gemacht! :)
Raiks
7

In der neuesten Version verwendet mySQL. Um sich anzumelden auth_socket, müssen Sie die automatisch generierten Benutzeranmeldeinformationen kennen. Wenn Sie während des Installationsvorgangs eine Binärversion herunterladen, können Sie eine Auswahl treffen lagacy password.

So installieren Sie SQL in Linux-Debian-Versionen

sudo apt install mysql-server

über das Passwort wissen

sudo cat /etc/mysql/debian.cnf

Jetzt anmelden

mysql -u debian-sys-maint -p

Verwenden Sie das Passwort von debian.cnf

So zeigen Sie verfügbare Benutzerdatensätze an:

USE mysql
SELECT User, Host, plugin FROM mysql.user;

Jetzt können Sie einen neuen Benutzer erstellen. Verwenden Sie die folgenden Befehle:

use mysql;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'username'@'localhost';
flush privileges;

Auflisten der Zuschüsse für den jeweiligen MySQL-Benutzer

SHOW GRANTS FOR 'username'@'localhost';

So widerrufen Sie alle Berechtigungen für den jeweiligen MySQL-Benutzer

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'localhost';

Löschen / Entfernen eines bestimmten Benutzers aus der Benutzerkontoliste

DROP USER 'username'@'localhost';

Für weitere Befehle:

$ man 1 mysql

Bitte setzen Sie das Passwort für root nicht zurück, sondern erstellen Sie einen neuen Benutzer und gewähren Sie Rechte. Dies ist die beste Vorgehensweise.

Anand Raja
quelle
6

Ab Ubuntu 20.04 waren unter Verwendung des Standardpakets MariaDB 10.3 die erforderlichen Schritte (Remix früherer Antworten aus diesem Thread):

  1. Melden Sie sich bei mysql als root an: sudo mysql -u root
  2. Aktualisieren Sie das Passwort:
USE mysql;
UPDATE user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
UPDATE user set plugin="mysql_native_password" where User='root';
FLUSH privileges;
QUIT
  1. sudo service mysql restart

Danach können Sie mit Ihrem neuen Passwort eine Verbindung zu Ihrem lokalen MySQL herstellen: mysql -u root -p

Attila Fulop
quelle
5
  1. Als erstes solltest du MySQL stoppen
  2. Verwenden Sie diesen Befehl sudo mysqld_safe --skip-grant-tables --skip-networking &
  3. und dann Eingabe mysql -u root versuchen auf diese Weise, ich habe mein Problem mit dieser Methode gelöst.
Qingliu
quelle
Hat nicht funktioniert. Ich musste / var / run / mysqld erstellen, bekam aber irgendwann einen weiteren Fehler. mysqld_safe mysqld aus der PID-Datei /var/run/mysqld/mysqld.pid wurde beendet. syslog sagte: Unix-Socket-Sperrdatei /var/run/mysqld/mysqld.sock.lock konnte nicht erstellt werden. Musste mysql: mysql in den Ordner / var / run / mysqld chown, dann hat es funktioniert!
Fabien Haddadi
Ich erhalte eine Fehlermeldung, da das mysqld_safe-Verzeichnis '/ var / run / mysqld' für die UNIX-Socket-Datei am zweiten Punkt nicht vorhanden ist
Satish Gadhave
5

Ab Ubuntu 20.04 mit MySql 8.0 : Die Funktion PASSWORDexistiert nicht mehr, daher ist der richtige Weg:

  1. Melden Sie sich bei MySQL mit an sudo mysql -u root

  2. Änder das Passwort:

USE mysql;
UPDATE user set authentication_string=NULL where User='root';
FLUSH privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'My-N7w_And.5ecure-P@s5w0rd';
FLUSH privileges;
QUIT

Jetzt sollten Sie in der Lage sein, sich mit mysql -u root -p(oder mit dem Benutzernamen root bei phpMyAdmin) und Ihrem gewählten Passwort anzumelden.

P, S:

Sie können sich auch mit dem Benutzer anmelden debian-sys-maint, das Passwort befindet sich in der Datei/etc/mysql/debian.cnf

Ohad Cohen
quelle
4

Die einzige Option, die für mich funktioniert hat, ist die in diesem Link beschriebene .

Zusammenfassend (falls die Website ausfällt) heißt es:

So installieren Sie MySQL:

sudo apt update
sudo apt install mysql-server

Bei der nächsten Eingabeaufforderung werden Sie aufgefordert, ein Kennwort für den MySQL-Root-Benutzer festzulegen. Sobald Sie dies tun, werden Sie vom Skript auch aufgefordert, den anonymen Benutzer zu entfernen, den Root-Benutzerzugriff auf den lokalen Computer einzuschränken und die Testdatenbank zu entfernen. Sie sollten alle Fragen mit „Y“ (Ja) beantworten.

sudo mysql_secure_installation

Dann

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;

Danach können Sie beenden:

exit

Jetzt können Sie sich ganz einfach anmelden (Denken Sie daran, Ihr sehr starkes Passwort einzugeben ):

mysql -u root -p
# type the password now.

Dies war die einzige Option, die für mich funktioniert hat, nachdem ich viele Stunden lang die oben genannten Optionen ausprobiert hatte.

Ruben Alves
quelle
3

Ich denke, ein anderer Ort zu suchen ist /var/lib. Wenn Sie dorthin gehen, sehen Sie drei MySQL-Ordner mit 'interessanten' Berechtigungen:

user   group 
mysql  mysql

Folgendes habe ich getan, um mein Problem mit dem Root-Passwort zu lösen:

nach dem Rennen

sudo apt-get purge mysql*
sudo rm -rf /etc/mysql

Ich habe auch Folgendes ausgeführt (anstelle von my_username setzen Sie Ihren):

cd /var/lib
sudo chown --from=mysql <my_username> mysql* -R
sudo rm -rf mysql*

Und dann:

sudo apt-get install mysql-server

Das veranlasste mich, ein neues Root-Passwort auszuwählen. Ich hoffe, es hilft

Leo Skhrnkv
quelle
Das Entfernen von / etc / mysql verhindert, dass der MySQL-Server am
19.04
Was Sie über 19.04 gesagt haben, macht keinen Sinn. Ich denke, Sie machen neben den oben beschriebenen Schritten etwas falsch. Außerdem, zu
Ihrer Information
Außerdem lautet die Frage "Standardkennwort von MySQL in Ubuntu Server 16.04". Ich sehe 19.04 dort nicht
Leo Skhrnkv
Hätte 19.04 Beta sagen sollen. Sie haben Recht, dies gilt wahrscheinlich nicht für den 16.04. In der Beta-Version 19.04 fordert die (Neu-) Installation von mysql-server nicht zur Eingabe des Root-Passworts auf. Und ich habe mysql-server * gelöscht, nicht mysql * (was dazu führen würde, dass zu viele Pakete deinstalliert werden), und das Verzeichnis / etc / mysql wird von mysql-common erstellt, sodass das Entfernen von Hand ohne Entfernen dieses Pakets mysql- verhindert. Server von der Installation.
Gpothier
1

Einfach laufen sudo dpkg-reconfigure mysql-server-5.7

Sie können die installierte Version finden, indem Sie ausführen dpkg --get-selections | grep mysql-server

rynop
quelle
8
Dieser Befehl gab nicht die Option, das Root-Passwort festzulegen
Stewart
Dieser Befehl gab nicht die Option, das Root-Passwort
festzulegen
Dieser Befehl gab nicht die Option, das Root-Passwort
festzulegen
0

In früheren Versionen konnte das Root-Passwort leer sein. In neueren Versionen ist das Root-Passwort das Anmeldekennwort des Administrators (Hauptbenutzers) während der Installation.

Bharat Vora
quelle
-1

Wenn Sie Ihre MySQL mit installieren apt install mysql.
Sie können sich einfach mit Ihrem MySQL anmelden sudo mysql.

Haoyu Wang
quelle