Опция skip-grant-tables позволяет запустить сервер баз данных MySQL и затем авторизоваться без запроса пароля пользователя root.
Пароль пользователя root задается при установке сервера баз данных. Сменить пароль root можно выполнив простой запрос UPDATE или ALTER c указанием пользователя и нового пароля к системной базе данных из консоли MySQL.
Пример
USE mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Если пароль root неизвестен, но есть доступ по ssh на сервер, пароль также можно сменить, для этого потребуется остановить MySQL
MySQL сменить пароль root через skip-grant-tables в Debian/Ubuntu
Все команды выполняются от имени системного пользователя root.
Останавливаем сервер баз данных.
/etc/init.d/mysql stop
Запускаем его в фоновом режиме и с опцией --skip-grant-tables
, пароль при этом не запрашивается и изменения данных внесены быть не могут (такие как обновление значений или удаление таблиц)
mysqld_safe
--skip-grant-tables
&
Подключаемся к MySQL от имени root
mysql -u root
Оказавшись в консоли MySQL выполняем последовательно несколько команд.
Используем таблицу mysql
USE mysql;
Устанавливаем новый пароль заменяя необходимым значением password в кавычках.
UPDATE USER SET PASSWORD=PASSWORD('password') WHERE USER='root';
Обновляем данные о привилегиях:
FLUSH PRIVILEGES;
Выходим из консоли MySQL
EXIT;
MySQL сменить пароль root в CentOS
Для CentOS процедура абсолютно идентична, но для остановки сервера баз данных и его запуска используются команды для системы инициализации systemd
systemctl stop mysqld
mysqld_safe
--skip-grant-tables
&
mysql -u root
Далее в консоли сервера баз данных:
USE mysql;
UPDATE USER SET PASSWORD=PASSWORD('password') WHERE USER='root';
FLUSH PRIVILEGES;
EXIT;
Запускаем MySQL
systemctl start mysqld
Подключаемся указывая новый пароль когда MySQL его запросит
mysql -u root -p
Пароль успешно сменен с использованием опции skip-grant-tables в MySQL. Авторизация выполнена.
root пароль на практике нужен только администратору, сайты нужно запускать указывая отдельного MySQL пользователя.
В частности, это позволяет подключиться от имени root тогда когда для пользователя с меньшими привилегиями исчерпан лимит подключений (в таких случаях возникает ERROR 1040 (HY000): Too many connections).