Mysql доступ, требующий команды sudo перед его запуском - PullRequest
0 голосов
/ 05 сентября 2018

Я использую команду «mysql -u root -p» для запуска mysql, но получаю сообщение об ошибке:

Доступ запрещен для пользователя 'root' @ localhost ''

Мне всегда нужно использовать sudo, чтобы запустить его. Другие приложения запускаются нормально. Как мне обойти это? Я делаю соединение JDBC (Java). Mysql не дает доступ к базе данных в Java. Я думаю, что требование команды sudo является проблемой.

Система: Ubuntu 18.04 LTS с двойной загрузкой и Windows 10.

1 Ответ

0 голосов
/ 05 сентября 2018

Мне всегда нужно использовать sudo, чтобы запустить его

Нет. Вам нужно использовать sudo, чтобы заставить клиента проходить аутентификацию на сервере.

Причиной этого является то, что в последних версиях MySQL (и MariaDB, PerconaDB) используется SO_PEERCRED , чтобы имя пользователя, указанное в строке подключения (root), было тем же пользователем, что и запущенный клиент (это использует пароль несколько избыточный).

Поскольку SO_PERRCRED работает только с сокетами файловой системы (AF_UNIX), вы можете иметь возможность обойти ограничение, подключившись через сетевой сокет, например,

 mysql -h 127.0.0.1 -u root -p

Но имейте в виду, что MySQL обычно имеет отдельные пользовательские записи для соединений через сетевые (host! = 'Localhost') и файловые системы (host = 'localhost') сокеты.

Но в соответствии с вопросом @Ciarambola отмечен, «root» является особым случаем и не должен использоваться для обычного доступа - вы должны создать нового пользователя.

Mysql не предоставляет доступ к базе данных в Java

Вы должны никогда использовать учетную запись администратора в качестве встроенных учетных данных в приложении. Если вы создаете эту учетную запись с тем же именем, что и ваш пользователь, вам не нужно будет использовать sudo при подключении к «localhost».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...