2012-02-15 3 views
2

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

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [28000]; error code [1045]; Access denied for user 'root '@'localhost' (using password: YES); nested exception is java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)

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

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

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

+1

Каково ваше имя хоста при использовании mysql adminstrator (или других инструментов)? Как упоминалось ниже, у вас может возникнуть проблема с предоставлением этого пользователя, подключающегося к локальному хосту. Я не видел упоминания имени хоста в первой части вашего сообщения. – jmq

+1

Вы запускаете свое приложение «java» с помощью корневых имен? когда вы запускаете приложение - проверьте его, используя «ps -ef | grep » и посмотрите, какой пользователь его запускает, - если он не «root», у вас есть свой ответ прямо там. – alfasin

+0

@jmquigley localhost – NinjaBoy

ответ

2

Возможно, вам понадобится разрешение GRANT для доступа к базе данных.

Посмотрите на документы MySQL для чего-то, что выглядит следующим образом:

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

«ПМТ» это всего лишь пример выше. Мне все равно удалось создать имя базы данных, имя пользователя и пароль. Я не рекомендую это в качестве лучшей практики. Это то, что я сделал для некоторых местных разработок.

Мне лично не нравится доступ к корневому доступу GRANTing к любому приложению. Я бы не использовал имя пользователя root и пароль даже в игрушечном приложении. Это не требует больших усилий для создания нового пользователя и предоставления соответствующих разрешений GRANT.

+0

Как я это сделаю? Пожалуйста, покажите мне. Я новичок в этом. – NinjaBoy

+0

Должен ли я перезагрузить свой сервер после выполнения этих команд? – NinjaBoy

+0

перезапустить mysql? нет. – duffymo

5

Скорее всего, ваша инфраструктура входит в вашу локальную базу данных как 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-сокеты для вашего сервера.

+0

Когда я запускал команду SELECT * от пользователей WHERE user = 'root'; какую базу данных я буду использовать, чтобы узнать, есть ли у меня «root'@'127.0.0.1»? Я новичок в этом. – NinjaBoy

+0

Собственно, команда 'select * from mysql.user, где user = 'root';'. Я обновил свой ответ. – Perception

+0

Я видел много случайных символов, таких как «+» и «-». Однако я видел эту строку: | localhost | корень | * 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y | Y. Означает ли это, что у меня есть корень? – NinjaBoy

Смежные вопросы