mysql fragt bei der Installation nicht nach dem root-Passwort

54

Früher habe ich apt install mysql-serverMySQL unter Ubuntu 16.04 installiert, aber während der Installation wurde nicht nach dem root-Passwort gefragt.

Nach der Installation bekam ich ERROR 1045als ich versuchte mich einzuloggen rootund mysql_secure_installationwarf den gleichen Fehler. Ich purged und autoremoved dann neu installiert, aber es funktioniert nicht.

Wie könnte ich das beheben? Kann ich das root-Passwort festlegen, wenn ich es während der Installation nicht festgelegt habe?

Dies ist mein Installationsprotokoll:

Die folgenden zusätzlichen Pakete werden installiert:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  Mysql-Server-Core-5.7
Vorgeschlagene Pakete:
  mailx tinyca
Die folgenden NEUEN Pakete werden installiert:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  Mysql-Server-Core-5.7
0 aktualisiert, 6 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Benötigt 0 B / 17,9 MB an Archiven.
Nach diesem Vorgang werden 160 MB zusätzlicher Speicherplatz verwendet.
Möchtest du weiter machen? [J / n] j
Pakete vorkonfigurieren ...
Auswahl des zuvor nicht ausgewählten Pakets libaio1: amd64.
(Datenbank wird gelesen ... 227144 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereiten des Auspackens ... / libaio1_0.3.110-2_amd64.deb ...
Libaio1: amd64 (0.3.110-2) wird entpackt ...
Auswahl des zuvor nicht ausgewählten Pakets mysql-client-core-5.7.
Entpacken wird vorbereitet ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Entpacken von mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Auswahl des zuvor nicht ausgewählten Pakets mysql-client-5.7.
Entpacken wird vorbereitet ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Mysql-client-5.7 (5.7.12-0ubuntu1) wird entpackt ...
Auswahl des zuvor nicht ausgewählten Pakets mysql-server-core-5.7.
Entpacken wird vorbereitet ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Mysql-server-core-5.7 (5.7.12-0ubuntu1) wird entpackt ...
Auswahl des zuvor nicht ausgewählten Pakets mysql-server-5.7.
Entpacken wird vorbereitet ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Mysql-server-5.7 (5.7.12-0ubuntu1) wird entpackt ...
Auswahl des zuvor nicht ausgewählten Pakets mysql-server.
Entpacken wird vorbereitet ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Mysql-server (5.7.12-0ubuntu1) wird entpackt ...
Trigger für libc-bin (2.23-0ubuntu3) werden verarbeitet ...
Verarbeitungsauslöser für man-db (2.7.5-1) ...
Trigger für systemd (229-4ubuntu4) werden verarbeitet ...
Verarbeitungsauslöser für ureadahead (0.100.0-19) ...
Einrichten von libaio1: amd64 (0.3.110-2) ...
Einrichten von mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Einrichten von mysql-client-5.7 (5.7.12-0ubuntu1) ...
Einrichten von mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Einrichten von mysql-server-5.7 (5.7.12-0ubuntu1) ...
Update-Alternativen: Verwenden von /etc/mysql/mysql.cnf, um /etc/mysql/my.cnf (my.cnf) im automatischen Modus bereitzustellen
Überprüfen, ob ein Update erforderlich ist.
Diese Installation von MySQL ist bereits auf 5.7.12 aktualisiert. Verwenden Sie --force, wenn Sie mysql_upgrade noch ausführen müssen
Einrichten von MySQL-Server (5.7.12-0ubuntu1) ...
Trigger für libc-bin (2.23-0ubuntu3) werden verarbeitet ...
spqa
quelle

Antworten:

60

Sie können das root-Passwort wiederherstellen oder festlegen, ohne das aktuelle zu kennen, indem Sie mysql starten, ohne die Grant-Tabellen zu laden.

Bitte beachten Sie die $in den Befehlen. Dies gibt die Terminal-Eingabeaufforderung an, die beim Eingeben des Befehls angezeigt wird. Es zeigt, dass es sich um eine Textzeile handelt, aber um einen tatsächlich eingegebenen Terminalbefehl. Das mysql>Präfix " " ist auch eine Eingabeaufforderung. Dies ist die Eingabeaufforderung, die Sie erhalten, wenn Sie mysql interaktiv ausführen .

Dies ist die cli (Befehlszeile) , dies zu tun:
(Achten Sie darauf, den aktuellen Server zu stoppen . Vor Durchführen der Schritte nur ein Server zu einem Zeitpunkt ausgeführt werden kann.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Jetzt können Sie sich als root ohne Passwort anmelden und alle Befehle ausführen, in diesem Fall legen Sie das root-Passwort als root fest.

$ sudo mysql --user=root mysql

Dies ist das festgelegte root-Passwort, das Sie in mysql ausführen, wenn Sie MySQL 5.6 oder niedriger haben:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

In MySQL 5.7 oder höher

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

Beenden Sie von dort aus (beenden Sie die laufende msqld) mysql und starten Sie sie wie gewohnt.

Hinweise zum Starten und Stoppen des mysql-Dienstes:

Stoppen Sie mysql:

$ sudo service mysql stop

Starte mysql (normal):

$ sudo service mysql start

Beenden Sie die temporäre Sitzung im abgesicherten Modus von MySQL:

$ sudo mysqladmin shutdown
LD James
quelle
11
in mysql 5.7.12 gibt es keine spalte mit dem namen password in der benutzertabelle. Daher hat der folgende Befehl für mich funktioniert. update user set authentication_string = PASSWORD ('neues Passwort') wobei user = 'root';
Der Code
7
Ich bekomme immer nochERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr
@ ErelSegal-Halevi Es gibt zwei Dinge, die du tun solltest. Rennen $ mysql_upgrade -u root -p. Versuchen Sie auch den obigen Befehl von RP Singh.
LD James
Ich bekomme auch immer noch diesen Fehler.
Jamie Hutber
SET PASSWORD FOR 'root' = PASSWORD('your-password')Wenn Sie Mariadb verwenden
user1036719
37

Bei der Installation mysqlunter Ubuntu 16.04 werden Sie nicht nach dem Passwort gefragt, aber Sie können es nach erfolgreicher Installation wie folgt festlegen:

Führen Sie nach Abschluss der Installation von mysql den folgenden Befehl aus:

sudo mysql_secure_installation

Wird sich zeigen:

HINWEIS: Das Ausführen aller Teile dieses Skripts wird für alle MariaDB-Server im produktiven Einsatz empfohlen! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG DURCH!

Um sich bei MariaDB anzumelden, benötigen wir das aktuelle Passwort für den Root-Benutzer. Wenn Sie MariaDB gerade installiert haben und noch kein Root-Passwort festgelegt haben, ist das Passwort leer. Drücken Sie hier einfach die Eingabetaste.

Enter current password for root (enter for none): (hier Enter drücken)

OK, erfolgreich verwendetes Passwort, weiter ...

Durch das Festlegen des Root-Passworts wird sichergestellt, dass sich niemand ohne die entsprechende Berechtigung beim MariaDB-Root-Benutzer anmelden kann.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Passwort erfolgreich aktualisiert! Berechtigungstabellen werden neu geladen ... ... Erfolgreich!


Für Ubuntu 18.04 oder mysql-serverVersion 5.7.22 funktioniert diese Methode nicht

Befolgen Sie zum Festlegen des root-Passworts in Ubuntu 18.04 zunächst die ersten drei Befehle oder die ersten beiden Schritte der Antwort von LD James und führen Sie dann Folgendes aus:

mysql> alter user 'root'@'localhost' identified by '<password>';

Passwort für root Benutzer ist gesetzt!

ODER

Befolgen Sie diese Schritte, um das root-Passwort in 18.04 festzulegen:

Da für den Root-Benutzer kein Kennwort festgelegt ist, melden Sie sich einfach mit einem leeren Kennwort an

sudo mysql -u root -p
Enter password: (press enter as no password is set)

danach kann einfach abfrage laufen

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';
Gänseblümchen
quelle
2
Das Problem bei dieser Frage ist, dass der Benutzer nicht zu den von Ihnen genannten Eingabeaufforderungen gelangen kann, weil er die nicht kennt current password for root.
LD James
@LDJames ja, du hast recht. Ich erinnere mich nicht an ERROR: 1405, als ich rannte, mysql_secure_installationaber sudo mysql_secure_installationfür mich arbeitete. Bei der Installation von MySQL werden Sie nicht nach dem Passwort gefragt. Mir ist es genauso ergangen. und here press enterbedeutet, drücken Sie die Eingabetaste ohne Passwort.
Gänseblümchen
2
Da es Ubuntu 18.04 oder Debian 9+ betrifft, wird keine Verbindung mit einem leeren Passwort hergestellt, und auch nach dem Zurücksetzen des Passes für root wird die Verbindung nicht hergestellt
chefarov
@chefarov Mit dem gleichen Problem konfrontiert, sehr frustrierend
RedactedProfile
In der Tat bekomme ich immer noch den gleichen Fehler
Jamie Hutber
16

Anscheinend erlaubt die Installation von mysql-server unter 16.04 (oder einer beliebigen 5.7-Installation?) Den Root-Zugriff nicht über ein Passwort, sondern über das Plugin auth_socket . Wenn Sie sudo mysql -u root(ohne Passwort) ausführen, erhalten Sie eine MySQL-Konsole. Wenn Sie den Befehl ausführen, werden Sie von einem Nicht-Root-Benutzer zur Eingabe eines Passworts aufgefordert.

Es scheint, dass das Ändern des Passworts keinen großen Unterschied macht, da das Authentifizierungs-Backend nicht einmal nach einem Passwort sucht. Es gibt einen sehr umfassenden Artikel darüber, wie Sie das Plugin ändern und zur Kennwortauthentifizierung wechseln können .

Karpfen
quelle
4
Ich konnte mit einer Neuinstallation von apt install mysql-serverohne Angabe eines Passwortes am 18.04. Bestätigen . Das Symptom und die Lösung ist genau wie beschrieben.
EricC
Wie zum Teufel verbinde ich mich?
Jamie Hutber
9

Nach der Installation nur:

1.

sudo mysql

(ja, kein Benutzer kein Pass)

2.Sie befinden sich jetzt in der MySQL-Konsole:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3.

FLUSH PRIVILEGES;

  1. Das ist es. Sie können jetzt das nächste Mal wie gewohnt auf die Konsole zugreifen:

    mysql -u root -p mein_neu_pass

DimiDak
quelle
3
Ich habe viele andere Antworten ausprobiert, aber diese funktionierte mit Amazon EC2
Haris ur Rehman,
2
Dies war die richtige Antwort für WSL Ubuntu (Linux unter Windows).
Fer García
2
Dies ist die einzige Antwort, die für mich bei der Neuinstallation von Ubuntu 18.04 in der Google Cloud funktioniert hat.
Aakash
1
Arbeitete für mich auf Ubuntu 19.04. Ich habe mysql_secure_myinstallation ausgeführt, aber anscheinend wurde das root-Passwort nicht festgelegt.
Jens Wagemaker
1
Ich habe Dutzende von Lösungen ausprobiert. Dies war die einfachste und einzige, die funktionierte.
Treff555
4
  1. Es gibt ein Standard-Benutzerkonto.

    $ vim /etc/mysql/debian.cnf 
    

    Sie erhalten dieses Konto folgendermaßen:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. Sie melden sich mit diesem Konto an

    $ mysql -u debian-sys-maint -p
    
  3. Bearbeiten Sie Ihr root-Passwort

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. starte mysql neu

    $ /etc/init.d/mysql restart;
    

dann kannst du mysql -u root -pmit deiner vorherigen einstellung.

pwxcoo
quelle
Ich habe jede andere Lösung ausprobiert, und dies ist die einzige, die für mich funktioniert hat. (Linux Mint 19.2).
ElectroBuddha
0

Zur Hauptantwort hinzufügen: Wenn Sie nicht weiterkommen

" mysqld_safe Starten des mysqld-Daemons mit Datenbanken aus / var / lib / mysql "

Beachten Sie, dass Sie ein anderes Terminalfenster verwenden müssen, um den folgenden Befehl einzugeben.

$ sudo mysql --user=root mysql

Wenn Sie versuchen, dies im selben Fenster zu tun, wird der mysqld-Safemode-Prozess beendet.

Mohd Abdul Mujib
quelle
-1

Hier erfahren Sie, wie Sie in Ubuntu 18.10 mysql-serverein Terminalkennwort eingeben .

  1. Laden Sie das MySQL APT-Repository über https://dev.mysql.com/downloads/repo/apt/ herunter.
  2. cdin Ihr Verzeichnis, in das Sie heruntergeladen und ausgeführt haben dpkg -i mysql-apt-config_0.8.13-1_all.deb(überprüfen Sie Ihre Versionsnummer)
  3. Wählen Sie im Kontextmenü die letzte Option "OK" und dann erneut "OK".

  4. Aktualisiere und installiere mysql-server und mysql-client:

sudo apt update
sudo apt installiere mysql-server mysql-client
  1. Geben Sie Ihr root-Passwort in die Eingabeaufforderung ein.
  2. Wählen Sie aus, "Use Legacy Authentication Method"ob Ihre laufenden Frameworks / Anwendungen (z. B. Laravel) das neue "Strong Password Encryption"noch nicht unterstützen. Wenn Ihr Framework / Ihre Anwendung dies unterstützt, "Strong Password Encryption"wählen Sie es aus.
  3. Melden Sie sich als root an und prüfen Sie, ob es funktioniert.
ThomasAFink
quelle