Код: Выделить всё
mysql -u root -p
Код: Выделить всё
CREATE USER 'username'@'192.168.%' IDENTIFIED BY 'the_password';
Код: Выделить всё
GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.%' WITH GRANT OPTION;
Код: Выделить всё
FLUSH PRIVILEGES;
Код: Выделить всё
SHOW GRANTS FOR username;
Код: Выделить всё
sudo mysqld_safe --skip-grant-tables &
Как сбросить пароль пользователя root
1) Останавливаем mysqld:
2) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
4) Делаем владельцем данного каталога пользователя mysql (чтобы не было проблем с правами)
5) Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция --skip-grant-tables). А также отключаем доступ к серверу через TCP/IP (с помощью опции --skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost.
В случае успешного запуска, вывод в консоли должен быть примерно таким:
7) Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded", а нам это не нужно:
Вывод в результате выполнения данной команды должен быть примерно таким:
9) Меняем пароль для нужного пользователя, в нашем случае это root:
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8...)
Для MySQL версий 5.7.5 и старее (5.7.4, 5.7.3...)
NEW_PASSWORD - это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
exit;
10) Выключаем запущенный в ручном режиме Mysqld сервер:
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Если все пройдет успешно, то вывод должен быть примерно таким:
11) Проверяем, что нет запущенных процессов mysqld:
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Код: Выделить всё
sudo service mysql stop
Код: Выделить всё
ps -eaf|grep mysqld
3) Создаем каталог /var/run/mysqld для запуска mysqld в safe режиме из консолиroot 24902 1530 0 11:41 pts/0 00:00:00 grep --color=auto mysqld
Код: Выделить всё
sudo mkdir /var/run/mysqld
Код: Выделить всё
sudo chown mysql /var/run/mysqld
Код: Выделить всё
sudo mysqld_safe --skip-grant-tables --skip-networking &
6) Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 26152
2019-05-02T14:17:14.807620Z mysqld_safe Logging to syslog.
2019-05-02T14:17:14.815041Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2019-05-02T14:17:14.856418Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Код: Выделить всё
mysql -u root mysql
Код: Выделить всё
update user set plugin="mysql_native_password";
8) Перезагружаем привилегии:Query OK, 0 rows affected (0.00 sec)
Rows matched: 4 Changed: 0 Warnings: 0
Код: Выделить всё
flush privileges;
Для MySQL версий 5.7.6 и новее (5.7.7, 5.7.8...)
Код: Выделить всё
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW_PASSWORD';
Код: Выделить всё
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NEW_PASSWORD');
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:Query OK, 0 rows affected (0.01 sec)
Код: Выделить всё
UPDATE mysql.user SET authentication_string=PASSWORD('NEW_PASSWORD'), plugin='mysql_native_password' WHERE User='root';
9) После чего, вводим команду exit для отключения:Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
exit;
10) Выключаем запущенный в ручном режиме Mysqld сервер:
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Если все пройдет успешно, то вывод должен быть примерно таким:
Если же команда не сработала и вы получаете вот такую (или любую другую) ошибку:2019-05-02T14:30:03.404615Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networking
То можно принудительно завершить процесс с помощью следующей команды:mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Код: Выделить всё
sudo kill `cat /var/run/mysqld/mysqld.pid`
Код: Выделить всё
ps -eaf|grep mysqld
12) Запускаем Mysql-server в нормальном режиме:root 24902 1530 0 11:41 pts/0 00:00:00 grep --color=auto mysqld
Код: Выделить всё
sudo service mysql start