Чтобы изменить пароль root пользователя MySQL нужно подключение к серверу по SSH.
Подключаемся к MySQL как пользователь root при помощи команды:
mysql –u root –p
Нажимаем Enter, указываем пароль и снова нажимаем Enter;
Выполним следующие команды:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
quit
После этого пароль будет изменён на newpass.
Данный способ также подходит и для изменений паролей других MySQL пользователей. Для этого в вышеуказанной команде необходимо указать пользователя, для которого меняется пароль (например, вместо root@localhost — dovecot@localhost) и новый пароль.
Сброс root-пароля MySQL
Если mysql root-пароль был утерян, его можно сбросить следующим образом:
Подключаемся к VPS с правами root.
Останавливаем mysql-сервер.
На Ubuntu для остановки mysql-сервера используем команду:
service mysql stop
Создадим каталог /var/run/mysqld который будет использоваться mysql для хранения и доступа к файлу сокета и назначим необходимые права:
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
Запустим mysql со следующими параметрами:
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
Проверим, что процесс запущен:
jobs
На этом этапе мы можем получить доступ к mysql без пароля.
Входим командой:
mysql -u root
Затем сбросим пароль root следующей последовательностью запросов:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> USE mysql;
Database changed
mysql> UPDATE user SET authentication_string=PASSWORD("новый_root_пароль") WHERE User='root';
Query OK, 1 row affected, 1 warning (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> quit
Новый_root_пароль, мы установили "1111".
Завершим процесс mysqld:
sudo pkill mysqld
Запустим службу mysql:
sudo service mysql start
Теперь мы можем выполнить вход, используя установленный пароль:
mysql -u root --password=1111
На Debian для остановки mysql-сервера используем команду:
service mysql stop
Запускаем mysql с ключем --skip-grant-tables в фоновом режиме :
/usr/bin/mysqld_safe --skip-grant-tables --user=root &
Заходим в mysql от пользователя root (пароль запрашиваться не будет):
mysql -u root
Меняем пароль и применяем привилегии:
mysql> UPDATE mysql.user SET Password=PASSWORD('новый_root_пароль') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit
На CentOS 7 для остановки mysql-сервера используем команду:
sudo /etc/init.d/mysqld stop
Далее выполняем команду:
sudo mysqld_safe --skip-grant-tables &
Символ & в конце команды означает, что она перейдёт в фоновый режим и мы получим терминал обратно.
Подключаемся к mysql с правами root. Поскольку mysql запущен в безопасном режиме, пароль для входа не требуется:
mysql -u root
Выбираем базу данных mysql:
use mysql;
Устанавливаем новый mysql root-пароль командой:
update user set password=PASSWORD("новый_root_пароль") where User='root';
Перезагружаем привилегии:
flush privileges;
Отключаемся от mysql:
quit;
Останавливаем и затем вновь запускаем сервер MySQL командами:
Debian/Ubuntu:
service mysql stop
service mysql start
CentOS 7
/etc/init.d/mysql stop
/etc/init.d/mysql start
Пробуем подключиться к mysql с новым установленным паролем.