2012-01-10 5 views
0

Я пытаюсь подключиться к базе данных MySQL из Java (MySQL размещен сервер WAMP)Подключение к базе данных MySQL Java

String userName = "root"; 
String password = "pass"; 
String url = "jdbc:mysql://localhost/dbase"; 
Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection (url, userName, password); 

Соединение хорошо, когда я бегу с локального хоста. Однако, когда я запускаю этот код с другого компьютера, заменяющего Localhost с IP моего компьютера (в пределах одной и той же сети), я получаю ошибку,

message from server: "Host '<name>' is not allowed to connect to this MySQL server" 

Я попытался с портом 3306 тоже. Что не так?

+0

См. Здесь - http://forums.mysql.com/read.php?52,18966,134534 для наиболее вероятного источника проблемы. – Perception

+0

Я считаю, что mysql использует только локальные хост-соединения. Вам нужно будет изменить конфигурационный файл, чтобы разрешать подключения за пределами локального хоста. Поэтому добавьте свой IP-адрес к разрешенным пользователям. – Andy

ответ

5

Это вопрос разрешения на стороне базы данных; вам необходимо предоставить разрешения для пользователя root для подключения с вашего конкретного IP-адреса.

Что-то, как это должно работать:

GRANT ALL ON foo.* TO [email protected]'1.2.3.4' IDENTIFIED BY 'PASSWORD'; 

С другой стороны; Я бы не использовал root для доступа к базе данных; для этого вы должны использовать обычную учетную запись пользователя.

+0

Спасибо за ваш комментарий. Я создал другое имя пользователя admin и сделал Grant All на admin. * To root @ ' ИДЕНТИФИЦИРОВАН По паролю, и теперь получите эту ошибку. Доступ запрещен для пользователя 'admin' @ '<имя_компьютера>' (с использованием пароля: YES) – Ank

+0

@Ankur: Теперь похоже, что вы вводите неверный пароль? Что вы используете? – Icarus

+0

Спасибо за ваш ответ. Мой пользователь: pass был admin: admin и вот что я упомянул в коде. Это не так. – Ank

2

Вы не должны использовать учетную запись root для разработки. Чтобы решить вашу проблему, создайте гипотетического пользователя, который называется dbasedev.

CREATE USER 'dbasedev'@'%' IDENTIFIED BY 'passw0rd!'; 
GRANT ALL PRIVILEGES ON *.* TO 'dbasedev'@'%'; 
FLUSH PRIVILEGES; 

Это позволит вам подключиться к серверу MySQL с идентификатором пользователя: dbasedev, пароль: passw0rd!, с любого хоста.

Это дополнение к ответу @ Icarus, я не мог опубликовать весь код в комментарии.

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