Как изменить пароль пользователя MySQL «root» с помощью MySQL v5.7?

Как изменить пароль пользователя MySQL «root» с помощью MySQL v5.7?

Текущая среда:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

Пользователь команды смены пароля:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

Я что-то пропустил?

решение1

В MySQL 5.7 passwordполе в mysql.userтаблице field было удалено, теперь имя поля — authentication_string.

Сначала выберите базу данных:

mysql> use mysql;

А затем покажите таблицы:

mysql> show tables;

Вы найдете userтаблицу и увидите ее поля:

mysql> describe user;

Вы увидите, что нет поля с именем password, поле пароля называется authentication_string. Так что просто сделайте это:

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

Как предложил @Rui F Ribeiro, в качестве альтернативы вы можете запустить:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

решение2

Способ смены пароля в MySQL:SET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

видетьСправочное руководство MySQL 5.7 / ... / Синтаксис SET PASSWORD

Оператор SET PASSWORD назначает пароль учетной записи пользователя MySQL, указанный либо в виде открытого текста (незашифрованного), либо в виде зашифрованного значения:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

Принятый ответ от Рахула показывает, как обновить пароль с помощью DMLзаявления.

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

Предупреждение: это не официальный и не поддерживаемый способ. Это может вызвать проблемы, если вы не знаете, что делаете. Не забывайте FLUSH PRIVILEGES.

Для большинства операций, таких как создание пользователя, изменение его привилегий или изменение его пароля, вам следует использовать высокоуровневые операторы. Они не только проще в использовании и совместимы с большим количеством версий MySQL, но и предотвращают ошибки (конечно, не забудьте настроить режим SQL «NO_AUTO_CREATE_USER»). Они даже обычно хорошо работают в среде, враждебной MyISAM, например, в кластере Galera.

Прекратите использовать FLUSH PRIVILEGES

Пожалуйста, используйте GRANT, REVOKE, SET PASSWORD, или RENAME USER, а не прямые операторы DML.

Обновление: синтаксис SET PASSWORD ... = PASSWORD('auth_string') следующийустарело с версии MySQL 5.7.6и будет удален в будущей версии MySQL.

решение3

mysqladmin -u user-name password -p "oldpassword" "newpass"

если вы можете войти, попробуйте это, ""не работает, попробуйте ''одинарную кавычку

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

решение4

Для этой проблемы я использовал простой и грубый метод, переименовав имя поля в пароль, причина этого в том, что я использую программное обеспечение Mac Navicat Premium в визуальной ошибке операции: Неизвестный столбец «пароль» в «списке полей», само программное обеспечение использует пароль, так что я не могу легко работать. Поэтому я вхожу в командную строку базы данных, запускаю

Use mysql;

А затем измените имя поля:

ALTER TABLE user CHANGE authentication_string password text;

В конце концов, это нормально.

Связанный контент