Как установить root пароль для MySQL в Debian 9 (или MySQL 5.7+, MariaDB 10.1+)

Одно из новшеств новых версий MySQL и его свободного ответвления под названием MariaDB, является организация аутентификации пользователей базы данных. Мы привыкли, что после установки mysql-server, следующим шагом задаём root пароль, однако, после установки mysql-server в Debian 9, мы столкнёмся с тем, что ожидаемое «окно» ввода root пароля не появится, а все инструкции в интернетах по установке root пароля MySQL не сработают. Дело в том, что теперь под пользователем MySQL root можно авторизовываться только через auth_socket, например, в консоли через mysql-client из под unix root пользователя, без ввода пароля: mysql -u root.

Такие дела. Все эти mysqladmin -u root password, SET PASSWORD FOR root@localhost=PASSWORD, UPDATE user SET Password=PASSWORD(… не помогут. Утверждают, это повышает безопасность.

Но это, мягко скажем, не очень удобно для организации и управления базами данных, а также создания новых пользователей этих баз данных, когда есть, например, phpMyAdmin, предоставляющий комфортный веб-интерфейс для рутинных действий. Поэтому заходим в mysql-client из под unix root пользователя:

root@server:~# mysql -u root

И создаём нового «рут» пользователя:

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

Где root2 и PASSWORD нужно заменить на свои.

Возможно, это сводит на нет нововведения безопасности, но лично мне нужен пользователь MySQL, через которого можно видеть все базы данных и управлять другими пользователями MySQL, без опасности что-то забыть, ошибиться в SQL командах или их порядке.

К сожалению, данный метод не даст возможность выдавать привилегии пользователям через phpMyAdmin, поэтому вот команда, которую можно будет использовать через mysql -u root:

GRANT ALL PRIVILEGES ON `DB_NAME`.* TO 'DB_USER'@'localhost' WITH GRANT OPTION;

Она выдаст пользователю DB_USER все привилегии на уровне базы данных DB_NAME.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *