Я работаю над 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 не существует. Таким образом, я не могу использовать это, чтобы исправить что-либо.
Есть идеи, что еще я мог попробовать?
Ответы:
Вам необходимо сбросить пароль. так за что
источник
plugin: auth_socket
он включен по умолчанию. Другими словами, нет необходимости использовать,--skip-grant-tables
как было бы необходимо в прошлых версиях MySQL. (Кроме того, технически, эта мера не "сброс пароля"; это отключение плагина.)Идея новой настройки заключается в том, что вам вообще не следует использовать пароли. Смотрите UNIX_SOCKET Аутентификационный плагин для деталей.
Что особенно важно, так это содержимое /usr/share/doc/mariadb-server-10.0/README.Debian.gz в Ubuntu 16.04:
Поэтому, если вы отключите этот плагин для пользователя root и установите пароль, ежедневное задание cron будет прервано, поскольку предполагается, что оно войдет в систему как root без пароля, но с помощью плагина.
Позже это говорит:
Похоже, пароли больше не должны использоваться приложениями.
источник
"So if you disable that plug-in for root and set a password, the daily cron job will break as it's assuming it will log in as root without a password..."
неочевидное следствие того, что подключаемый модуль аутентификации UNIX_SOCKET (который сейчас используется по умолчанию), заключается в том, что возможность аутентификации пользователя корневой базы данных с паролем отключена. Нигде на mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin не упоминается это существенное ограничение. Соответственно, невозможно войти в систему как root, например, через SSH.Я решил проблему, следуя ответу из этого поста:
Не удается сбросить пароль root MySQL (MariaDB)
Нужно изменить поле плагина mysql.user для всех корней на пустую строку.
источник
Я сделал это, выполнив эту команду сразу после установки:
На первом шаге пароль пуст, поэтому просто нажмите Enter.
источник
У меня была такая же проблема на raapberry pi с натяжкой. Моим решением было создать нового пользователя со всеми привилегиями, выполнив следующие действия:
Теперь я могу войти в систему и использовать пользователя «admin» в качестве суперпользователя.
Я надеюсь, что это поможет кому-то.
источник
Просто используйте
sudo mysql -u root
- вот и всеДетали: Новые версии аутентифицируются в mysql, используя системную аутентификацию. Так что, если вы можете использовать sudo для ОС, это предполагает, что вы тоже root db. Вы можете подтвердить это, выдав
sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Вы должны увидеть что-то вроде этого (возможно,auth_socket
в других дистрибутивах)источник