JDBC Hibernate - Mysql Ошибка подключения - PullRequest
3 голосов
/ 16 февраля 2012

У меня на рабочем столе Ubuntu 11.10 локальный сервер mysql. Имя хоста = localhost; имя пользователя = root; пароль = root; Имя базы данных = CBS. Я действительно запутался, потому что когда я получаю доступ к mysql, используя terminal, mysql administrator и mysql query browser, я использую те аутентификации, которые я упомянул выше, и все в порядке. Моя проблема заключается в том, что, когда я настраиваю свои jdbc.properties в своем приложении Java, я получаю эту ошибку:

org.springframework.web.util.NestedServletException: обработка запроса не удалась; вложенным исключением является org.springframework.jdbc.UncategorizedSQLException: операция гибернации: не удается открыть соединение; неклассифицированное SQLException для SQL [???]; Состояние SQL [28000]; код ошибки [1045]; Доступ запрещен для пользователя 'root' @ 'localhost' (используется пароль: YES); вложенное исключение: java.sql.SQLException: доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: YES)

Мой файл конфигурации, jdbc.properties:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/CBS
jdbc.username=root  
jdbc.password=root

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

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

Скорее всего, ваш фреймворк входит в вашу локальную базу данных как 127.0.0.1.Что создаст проблему входа в MySQL, если вы не определили соответствующие учетные данные домена.Попробуйте это, чтобы проверить:

mysql -uroot -proot
SELECT * from mysql.user WHERE user = 'root';

Если нет root'@'127.0.0.1, то обнаружите проблему и устранить ее, выполните одно из двух действий:

  1. Определите учетные данные в домене для «root», в «127.0.0.1».
  2. Определите учетные данные в домене с подстановочными символами для «root», чтобы вы могли войти в MySQL с этими учетными данными из нескольких мест.

Вот пример второго:

mysql -uroot -proot

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

В дополнение к этому, я определенно рекомендую использовать что-то более креативное для вашего идентификатора пользователя и пароля.Особенно, если у вас включены сокеты TCP для вашего сервера.

3 голосов
/ 16 февраля 2012

Для доступа к базе данных вам могут потребоваться разрешения GRANT.

Посмотрите на документы MySQL что-то похожее на это:

create database pmt;
create user pmt identified by 'pmt';
grant all on pmt.* to 'pmt'@'%';

"pmt" - только пример выше.Мне довелось сделать имя базы данных, имя пользователя и пароль одинаковыми.Я не рекомендую это как лучшую практику.Это просто то, что я сделал для локальной разработки.

Лично мне не нравится предоставлять root-доступ любому приложению.Я бы не использовал имя пользователя и пароль root даже в игрушечном приложении.Это не займет много усилий, чтобы создать нового пользователя и предоставить соответствующие разрешения.

...