При обновлении или изменении пароля пользователя 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.
