При обновлении или изменении пароля пользователя MySQL вы можете столкнуться с ошибкой, говорящей о том, что password
столбец неизвестен.
Рассмотрим следующий пример UPDATE
:
UPDATE mysql.user
SET Password = PASSWORD('root')
WHERE User = 'root';
Приведенный выше оператор может привести к следующей ошибке:
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
Это связано с тем, что версия MySQL 5.7 изменила колонку Password
на authentication_string
.
Если версия вашего сервера MySQL находится в диапазоне от 5.7.0 до 5.7.5 , вы можете изменить Password
на authentication_string
, как показано ниже:
UPDATE mysql.user
SET authentication_string = PASSWORD('root')
WHERE User = 'root';
-- Query OK, 0 rows affected (0.01 sec)
Приведенный выше оператор должен работать, но вместо использования UPDATE
оператора есть другой оператор, который рекомендуется для изменения паролей пользователей MySQL.
Кроме того, функция PASSWORD()
устарела , начиная с версии MySQL > 5.7.5 , поэтому вы можете не выполнить оператор UPDATE
для версии MySQL 5.7.6 и выше.
Чтобы изменить пароль пользователя MySQL , рекомендуется использовать операторALTER USER
.
Синтаксис показан ниже:
ALTER USER user IDENTIFIED BY 'password_here';
Например, чтобы изменить root
пароль пользователя на abcd
, используйте следующую инструкцию:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abcd';
-- Query OK, 0 rows affected (0.01 sec)
Вам нужно добавить пользовательскую Host
часть, как показано ниже (используя @'localhost'
или @'%'
)
Вы можете найти Host
информацию о вашем пользователе, используя следующий запрос SELECT
:
SELECT User, Host FROM mysql.user;
Возвращаемый набор результатов будет аналогичен показанному ниже:
+------------------+-----------+
| User | Host |
+------------------+-----------+
| nathan | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
Как только вы найдете Host
имя своего пользователя, просто добавьте его в ALTER USER
оператор, как показано выше.
В заключение, это ALTER USER
является рекомендуемым заявлением для изменения учетной записи пользователя MySQL в соответствии с документацией MySQL.
Использование UPDATE
оператора и PASSWORD()
функции — это старый способ изменения паролей пользователей MySQL, который больше не работает в последней стабильной версии MySQL.