it-swarm.com.de

MySQL-Benutzer-DB hat keine Kennwortspalten - Installation von MySQL unter OSX

Ich versuche, das MySql-Root-Passwort zu ändern.

Was ich getan habe, ist unten.

  1. Installieren Sie MySql-5.7.6 ~ .dmg (Community Server) und Workbench.
  2. Schalten Sie den Server in den OSX System-Einstellungen aus.
  3. Zugriff auf MySql mit Konsole. Der Befehl lautete mysqld_safe --skip-grant
  4. Führen Sie update user set password=password('1111') where user='root'; aus und Sie erhalten eine Fehlermeldung -> ERROR 1054 (42S22): Unknown column 'password' in 'field list'.

Zu Ihrer Information, ich habe use mysql;. Also habe ich Abfrage auf Benutzertabelle ausgewählt und gefunden, dass die Passwortspalte tatsächlich nicht existiert. 

Es ist sehr komisch. Ist es möglich, dass die ursprüngliche Benutzertabelle keine Kennwortspalte enthält?

Wie kann ich ein Passwort ändern, das nicht existiert?

Danke für deine Antwort: D

134
Juneyoung Oh

In MySQL 5.7 wurde das Kennwortfeld im Tabellenfeld mysql.user entfernt. Der Feldname lautet nun 'authentication_string'. 

Wählen Sie zuerst die Datenbank aus: 

mysql>use mysql;

Und dann zeigen Sie die Tabellen: 

mysql>show tables;

Sie finden die Benutzertabelle, nun sehen wir ihre Felder:

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(16)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | mysql_native_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)

Überraschung! Es gibt kein Feld mit dem Namen 'password', das Passwortfeld heißt 'authentication_string'. Also einfach das tun:

update user set authentication_string=password('1111') where user='root';

Nun wird alles in Ordnung sein.

Im Vergleich zu MySQL 5.6 sind die Änderungen recht umfangreich: Was ist neu in MySQL 5.7

452
nodejh

Eine Falle, in die ich geraten bin, ist, dass es eine gibt kein Passwortfeld jetzt wurde es so umbenannt:

update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';

Sollte jetzt sein:

update user set authentication_string=password('YOURPASSWORDHERE') where user='root';

22
John C

Dieser Fehler tritt auf, wenn Sie das Kennwort bei der Installation nicht festgelegt haben, in diesem Fall mysql using unix-socket plugin .

Aber wenn Sie den Plugin-Link aus den Einstellungen (Tabelle mysql.user) löschen, tritt ein anderes Problem auf. Dies behebt das Problem nicht und führt zu einem weiteren Problem. Um den gelöschten Link zu reparieren und das Passwort ("PWD") festzulegen, gehen Sie wie folgt vor:

1) Führen Sie mit --skip-grant-tables wie oben gesagt.

Wenn es nicht funktioniert, fügen Sie den String skip-grant-tables im Abschnitt [mysqld] von /etc/mysql/mysql.conf.d/mysqld.cnf. Dann mach Sudo service mysql restart.

2) Führen Sie mysql -u root -p, dann (ändere "PWD"):

update mysql.user 
    set authentication_string=PASSWORD("PWD"), plugin="mysql_native_password" 
    where User='root' and Host='localhost';    
flush privileges;

quit

dann Sudo service mysql restart. Prüfen: mysql -u root -p.

Entfernen Sie vor restart diesen String aus der Datei mysqld.cnf, wenn Sie ihn dort setzen.

18
bl79

Verwenden Sie den Befehl ALTER USER, anstatt zu versuchen, eine Zeile USER zu aktualisieren. Beachten Sie, dass es möglicherweise mehr als einen 'root'-Benutzer gibt, da Benutzerentitäten auch von dem Computer qualifiziert werden, von dem aus sie eine Verbindung herstellen

https://dev.mysql.com/doc/refman/5.7/de/alter-user.html

Zum Beispiel.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password' 
ALTER USER 'root'@'*' IDENTIFIED BY 'new-password' 
14
O. Jones

Danke für deine Hilfe. Für den Fall, dass die Leute immer noch Probleme haben, probieren Sie es aus. 

Für MySQL Version 5.6 und darunter

Haben Sie Ihr ROOT-Passwort für Mac OS X vergessen und müssen es zurücksetzen? Folge diesen 4 einfachen Schritten:

  1.  Stoppen Sie den mysqld-Server. In der Regel kann dies über 'System Prefrences'> MySQL> 'Stop MySQL Server' erfolgen.
  2.  Starten Sie den Server im abgesicherten Modus mit Privileg-Umgehung Von einem Terminal: Sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3.  In einem neuen Terminalfenster:      Sudo /usr/local/mysql/bin/mysql -u root      UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q
  4.  Stoppen Sie den mysqld-Server erneut und starten Sie ihn im normalen Modus neu.

Für MySQL Version 5.7 und höher

  1.  Stoppen Sie den mysqld-Server. In der Regel kann dies von 'System Prefrences' > MySQL > 'Stop MySQL Server' aus erfolgen.
  2.  Starten Sie den Server im abgesicherten Modus mit Privileg-Umgehung Von einem Terminal: Sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
  3.  In einem neuen Terminalfenster:      Sudo /usr/local/mysql/bin/mysql -u root      UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root';      FLUSH PRIVILEGES;      \q      
  4.  Stoppen Sie den mysqld-Server erneut und starten Sie ihn im normalen Modus neu.
4
eli

Es funktionierte nur bei mir, wenn ich nach den hier genannten Befehlen "spülte". Hier ist die vollständige Liste der von mir verwendeten Befehle: 

Vorherige Antworten funktionieren möglicherweise nicht für spätere MySQL-Versionen. Führen Sie die folgenden Schritte aus, wenn die vorherigen Antworten nicht für Sie geeignet waren:

1- Klicken Sie auf das Wamp-Symbol> MySQL> MySQL-Konsole

2- Schreiben Sie nacheinander die folgenden Befehle

use mysql;
update user set authentication_string=password('your_password') where user='root';
FLUSH PRIVILEGES;
quit
4
Amgad

Für dieses Problem habe ich eine einfache und unhöfliche Methode verwendet, den Feldnamen in Kennwort umbenannt. Der Grund dafür ist, dass ich die Mac Navicat Premium-Software im visuellen Bedienungsfehler verwende: Unbekannte Spalte 'Kennwort' in 'Feldliste', die Software selbst benutzt Passwort, damit ich nicht einfach bedienen kann ..__ Daher verwende ich mich in die Datenbank-Kommandozeile, laufe

Use mysql;

Und ändern Sie dann den Feldnamen:

ALTER TABLE user CHANGE authentication_string password text;

Immerhin normal.

2
luyishisi

denken Sie daran, dass das Kennwort auch nach dem Neustart von mysql wie folgt festgelegt werden muss

SET PASSWORD = PASSWORD('root');
0
Pravin

Root Cause: root hat kein Passwort, und Ihre Python-Connect-Anweisung sollte dies widerspiegeln. 

Um den Fehler 1698 zu beheben, ändern Sie Ihr Python-Verbindungskennwort in ''.

hinweis: Wenn Sie das Kennwort des Benutzers manuell aktualisieren, wird das Problem nicht behoben. noch Fehler 1698 erhalten

0
Jameskchau