Программы
Решаем проблему ERROR 1348 column password is not updatable при обновлении пароля root в MySQL / MariaDB

Решаем проблему ERROR 1348 column password is not updatable при обновлении пароля root в MySQL / MariaDB

В MySQL есть временами непонятные ограничения, которые не позволяют привычным нам образом его использовать. Однако, если разобраться, то всё начинает иметь смысл.

Очевидно, что смена пароля супер-пользователя должна быть особо безопасной, чтобы случайно кто-то не смог получить прав, с которыми он может натворить много бед. Так что обычный UPDATE нам не подходит:

mysql> UPDATE mysql.user SET Password=PASSWORD('s3cr3t') WHERE User='root';
ERROR 1348 (HY000): Column 'Password' is not updatable

Поэтому нам нужна команда, которая на которую можно настроить иные привелегии, ведь право обновления значений в таблице mysql.user может быть и у других пользователей, обслуживающих данный сервер. С другой стороны обновлять структуру таблицы mysql.user обычно не надо, более того – это довольно важное и ответственное действие. Поэтому именно изменением таблицы или же ALTER-ом можно изменить пароль пользователя root.

ALTER USER 'root'@'localhost' IDENTIFIED BY 's3cr3t';

После чего не забываем обновить привелегии на нашем MySQL или MariaDB сервере:

flush privileges;

Вот так занятно придумали разработчики MySQL/MariaDB решить вопрос с правами на смену пароля root-а.