MySQL сброс root-пароля и создание пользователя

Категория: MySQL

Как сбросить root-пароль в MySQL. Как создать нового пользователя MySQL.

Создать нового пользователя

CREATE USER username@localhost IDENTIFIED BY 'YOUR_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'username'@localhost IDENTIFIED BY 'YOUR_PASSWORD';
FLUSH PRIVILEGES;

Сброс root-пароля

Останавливаем MySQL сервер и меняем пароль (или заново создаем пользователя root):

sudo service mysql stop ## Или: sudo systemctl stop mariadb
ps aux | grep mysql  ## !!! Убедиться, что все подключения закрыты !!!
sudo mysqld_safe --skip-grant-tables --skip-networking &
sudo mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ROOT_PASSWORD';
#UPDATE mysql.user SET authentication_string = PASSWORD('ROOT_PASSWORD') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
\q;
Если ошибки - пересоздаем пользователя root..
FLUSH PRIVILEGES;
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'ROOT_PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
\q;
Или пробуем так..
FLUSH PRIVILEGES;
UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ROOT_PASSWORD';
FLUSH PRIVILEGES;

Перезагрузка сервера:

sudo kill `sudo cat /var/run/mysqld/mysqld.pid`
sudo kill `sudo cat /var/run/mariadb/mariadb.pid`
sudo killall -9 mysqld_safe
sudo service mysql restart
sudo service mysql status
Ошибки при попытке изменить root пароль
> ## ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Если не указали sudo и пытаетесь подключиться под root без пароля.

## Пытался так:
SET PASSWORD FOR root = 'ROOT_PASSWORD';
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ROOT_PASSWORD');
ALTER USER 'root'@'localhost' IDENTIFIED BY 'ROOT_PASSWORD';

## И получил ошибки:
>> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED BY 'ROOT_PASSWORD'' at line 1
>> ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
>> ERROR 1131 (42000): You are using MariaDB as an anonymous user and anonymous users are not allowed to modify user settings


Сброс root-пароля (старый способ)

Добавить в конфиг /etc/mysql/my.cnf или /etc/mysql/conf.d/mysql.cnf:

sudo nano /etc/mysql/my.cnf
# или: 
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
## @note Reset the root password
skip-grant-tables

Перезапуск mysql:

sudo service mysql restart
# или
/etc/init.d/mysql restart

Авторизация и установка нового пароля для root:

mysql -u root
MariaDB [(none)]> UPDATE mysql.user SET password = PASSWORD('NEW_PASSWORD') WHERE user = 'root' AND host = 'localhost';

Убрать опцию из конфига!

sudo nano /etc/mysql/my.cnf
# или
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
## @note Reset the root password
#skip-grant-tables ## Закомментируйте или удалите опцию
sudo service mysql restart

* Показать список баз данных:

MariaDB [(none)]> SHOW DATABASES;

#mysql #mysqld #mariadb #root #password reset #reset password

категория: MySQL