Назад | Перейти на главную страницу

Как я могу настроить свой локальный сервер, чтобы разрешить соединение jdbc с mysql?

У меня есть небольшое Java-приложение. На данный момент я пытаюсь заставить его работать с mysql. У меня работает VMware Workstation и Ubuntu Server 10.10. Когда я пытаюсь подключиться к серверу (с моего ПК, на котором запущена VMware), чтобы запустить JDBC-соединение для драйвера mysql, это не работает. Я задавал аналогичный вопрос ранее в SO. Первый и единственный ответ (на данный момент) проблема в том, что брандмауэр или тип подключения могут быть проблемой, но я не знаю, как правильно его настроить.

Может кто поможет с этой частью?

Также я попытался создать *.jar файл из моего приложения и в ссылке я разместил localhost, и на сервере он работает нормально, поэтому я думаю, это еще раз доказывает, что во время подключения есть некоторые ограничения.

Я предполагаю, что адрес привязки

Порт по умолчанию для mysql - 3306. Проверьте, прослушивает ли он все интерфейсы с netstat -tanlp | grep LISTEN | grep 3306:

tcp        0      0 0.0.0.0:3306  0.0.0.0:*  LISTEN      mysqld

Если это говорит 127.0.0.1:3306 тогда ваш mysql слушает только на локальном хосте. Если это так, измените свой mysql my.cnf адрес привязки настройка:

bind-address    = 10.0.0.1

или

bind-address = 0.0.0.0 

слушать на всех интерфейсах.

Обновить: Хорошо, теперь вы можете подключиться к порту 3306. Сообщение об ошибке:

Host 'vm_ip' is not allowed to connect to this MySQL server

Значит, в пути нет firewall / iptables. Сообщение исходит от самого MySQL. Вам нужно будет сделать соответствующие «гранты», чтобы позволить вашему «пользователю» подключаться к базе данных с вашего «хоста». С точки зрения безопасности вам нужно быть очень осторожным при включении здесь. См. Следующий URL-адрес для получения справки:

http://dev.mysql.com/doc/refman/5.5/en/access-denied.html

Есть много сайтов, которые предоставляют всем всем ссылки типа на них. Будьте очень осторожны с тем, что вы используете из них. Если вашему пользователю нужен доступ только для чтения, вы можете начать с чего-то вроде:

GRANT select ON mydatabase.* to myusername@'192.168.1.1' IDENTIFIED BY 'mypasssword';

Будьте очень осторожны, просто выполняя команду типа «GRANT all».