LINUX.ORG.RU
ФорумAdmin

MySql на BionicBeaver

 , ,


0

1

Всем привет. Установил mysql и phpmyadmin. Во время установки phpmyadmin был настроен пароль доступа. Но при входе в phpmyadmin получаю: #1045 - Access denied for user ‘root’@‘localhost’ (using password: YES). Что через веб-интерфейс, что через терминал. Пробовал сбросить пароль с использованием skip-grant-tables, но mysql орёт, что этого нельзя сделать, так как сервер был запущен без проверки привилегий. Замкнутый круг получается. Подскажите, пожалуйста, как его победить можно. До этого был Xenial, там таких проблем не было, в Bionic Beaver первый раз столкнулся. Ни поменять пароль, ни создать нового пользователя тем более.

Это потому что в ubuntu-18.04 слегка намудрили с mysql. Для пользователя root при аутентификации по умолчанию указано использовать плагин unix_socket, следовательно под mysql-ным пользователем root может подключиться только системный root.
А ещё там включили использование плагина validate_password, который может не давать задать пароль, не отвечающий требованиям.

Бороться с этим можно так:
- смена пароля для root-а (https://websiteforstudents.com/mysql-server-installed-without-password-for-ro...)

подключаемся к mysql из консоли из-под root-а (просто командой mysql) или запускаем mysqld со --skip-grant-tables и выполняем

UPDATE mysql.user SET plugin='mysql_native_password' WHERE user='root';
FLUSH PRIVILEGES;
SELECT user, host FROM mysql.user WHERE user='root';
-- далее для каждой пары root@host меняем пароль
ALTER USER 'root'@'localhost' IDENTIFIED BY '*****';
....

- изменение требований к паролям (ERROR 1819 (HY000): Your password does not satisfy the current policy requirements)
SHOW GLOBAL VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password_special_char_count = 0;
-- теперь можно менять пользователю пароль
ALTER USER 'user'@'localhost' IDENTIFIED BY '*****';

-- либо совсем отключить плагин
UNINSTALL PLUGIN validate_password;

spirit ★★★★★ ()

Пробовал сбросить пароль с использованием skip-grant-tables, но mysql орёт, что этого нельзя сделать, так как сервер был запущен без проверки привилегий.
Замкнутый круг получается.

В этом случае можно напрямую править таблицы базы mysql (UPDATE mysql.user ...).
Но делать такое лично я не рекомендовал бы, т.к., например, пользователи там могут упоминаться в нескольких таблицах (mysql.user, mysql.db, ...) - переименовывать/удалять будет не удобно. Хотя для смены паролей покатит.
Лучше всего после подключения выполнить FLUSH PRIVILEGES - mysql подгрузит и включит работу с grant tables, после чего можно будет воспользоваться стандартными командами GRANT, ALTER USER, DROP USER, ... .

spirit ★★★★★ ()