Мне всегда нужно использовать 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».