Пароль администратора MariaDb не работает

8

Я только что установил MariaDbна свежий Ubuntu Gnome и впоследствии запустил mysql_secure_installation, где я установил приличный пароль администратора, удалил анонимного пользователя и т. Д.

После этого я понял странное поведение в отношении пароля администратора:

  • Если я пытаюсь войти с моей обычной учетной записи пользователя с помощью команды, mysql -u root -pя всегда получаю сообщение об ошибке: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    я почти уверен, что ввел правильный пароль, который я установил с помощью mysql_secure_installation ранее ...
  • Когда я запускаю команду с правами root sudo mysql -u root -p, я всегда получаю доступ к базе данных, независимо от того, какой пароль я на самом деле ввожу ...

Это нормальное поведение, я делаю что-то не так или я как-то испортил установку?

suamikim
источник

Ответы:

16

Такое поведение согласуется с включением плагина для аутентификации сокета для пользователя root, где MariaDB доверяет учетным данным операционной системы, полученным через сокет, и не использует пароль. Используя sudoили войдя в систему как пользователь root, вы можете подключиться к серверу базы данных как пользователь root, потому что вы являетесь пользователем root в ОС, но другие пользователи ОС не могут.

Вы можете удалить эту опцию с помощью:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

и тогда вы получите ожидаемое поведение, и любой пользователь, имеющий пароль root MariaDB, сможет войти в систему как root.

Альтернатива состоит в том, чтобы настроить другого пользователя, не root, который также имеет полные права администратора, и использовать его вместо root для целей администратора:

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;
HBruijn
источник
0

Ответ от HBruijn указан для использования

update user set plugin='' where User='root';

Однако, это сломало систему входа в систему для меня, так как никто больше не мог войти (используя правильный пароль или нет, и sudo или нет)

Чтобы заставить его работать, мне нужно было использовать это вместо:

update user set plugin="mysql_native_password" where User='root';
Alex
источник