20

Я работаю над Xubuntu 15.04. Я уже установил MariaDB-сервер в различных системах, и меня всегда спрашивали пароль root во время установки. На этот раз, однако, я не помню, чтобы меня спрашивали пароль. Когда я пытаюсь войти без пароля (или пустого пароля), я получаю сообщение об отказе в Access denied for user 'root'@'localhost' . Я попытался удалить пакет полностью

sudo apt-get remove mariadb-server
sudo apt-get purge mariadb-server

Когда я переустанавливал, меня все равно не спрашивали пароль root.

Я попробовал mysqld --skip-grant-tables из mysql, как исправить доступ, запрещенный для пользователя 'root' @ 'localhost' . Я могу изменить пароль для пользователя root в базе данных mysql - по крайней мере, изменится значение хэша - но я все еще не могу войти с новым паролем после перезапуска mysql-сервера. Я все еще получаю ту же ошибку.

Пользователь debian-sys-maint не существует. Итак, я не могу использовать это, чтобы исправить что-либо.

Есть идеи, что еще я мог попробовать?

7 ответов7

31

Вам необходимо сбросить пароль. так за что

sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
10

Идея новой настройки заключается в том, что вам вообще не следует использовать пароли. Смотрите UNIX_SOCKET Аутентификационный плагин для деталей.

Что особенно важно, так это содержимое /usr/share/doc/mariadb-server-10.0/README.Debian.gz в Ubuntu 16.04:

При новых установках пароль root не устанавливается и пользователь debian-sys-maint больше не создается. Вместо этого корневая учетная запись MariaDB настроена для аутентификации с использованием сокета unix, например, любой вызов mysqld пользователем root или с помощью sudo позволит пользователю увидеть приглашение mysqld.

Вы никогда не можете удалить пользователя root "mysql". Хотя пароль не установлен, плагин unix_auth гарантирует, что он может быть запущен только локально как пользователь root.

Учетные данные в /etc/mysql/debian.cnf указывают пользователя, который используется сценариями инициализации для остановки сервера и выполнения регистрации. Раньше это был пользователь debian-sys-maint, который больше не используется как root, может запускаться напрямую.

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

Позже это говорит:

Скрипты должны запускаться, поскольку у пользователя есть необходимые права доступа, и их можно идентифицировать с помощью unix_socket.

Похоже, пароли больше не должны использоваться приложениями.

2

Я решил проблему, следуя ответу из этого поста:

Не удается сбросить пароль root для MySQL (MariaDB)

Нужно изменить поле плагина mysql.user для всех корней на пустую строку.

1

Я сделал это, выполнив эту команду сразу после установки:

$ sudo mysql_secure_installation

На первом этапе пароль пуст, поэтому просто нажмите Enter.

0

У меня была такая же проблема на Rapberry Pi с натяжкой. Моим решением было создать нового пользователя со всеми привилегиями, выполнив следующие действия:

sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root

MariaDB [(none)]> use mysql
MariaDB [mysql]> FLUSH PRIVILEGES;
GRANT ALL privileges ON mysql.* TO 'admin'@'localhost' with grant option;

Теперь я могу войти и использовать пользователя "admin" в качестве суперпользователя.

Я надеюсь, что это поможет кому-то.

0

Просто используйте sudo mysql -u root - вот и все


Детали: Новые версии аутентифицируются в mysql, используя системную аутентификацию. Так что если вы можете использовать sudo для ОС, это предполагает, что вы тоже являетесь пользователем root db. Вы можете подтвердить это, выполнив sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;" , Вы должны увидеть что-то вроде этого (возможно, с auth_socket в других дистрибутивах)

+------+-----------+-------------+
| User | Host      | plugin      |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+
0

Просто используйте sudo mysql -u root и вы будете в.

Детали: Новые версии аутентифицируются в mysql, используя системную аутентификацию. Так что если вы можете использовать sudo для ОС, это предполагает, что вы тоже являетесь пользователем root db. Вы можете подтвердить это, выполнив sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;" , Вы должны увидеть что-то вроде этого (возможно, с auth_socket в других дистрибутивах)

+------+-----------+-------------+
| User | Host      | plugin      |
+------+-----------+-------------+
| root | localhost | unix_socket |
+------+-----------+-------------+

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .