Не могу подключиться к серверу MySQL из приложения Java
Это на сервере VPS\Centos. Сервер MySQL предварительно настроен.
Я запускаю приложение Java на Tomcat
Мое веб-приложение Java не может подключиться к серверу MySQL.
Я получаю ошибку -
"Причины: java.net.ConnectException: соединение отказано"
Я подозреваю, что это проблема конфигурации, а не проблема кодирования - поэтому я разместил это на ServerFault
И да, одно и то же веб-приложение может подключаться к MySQL на другом компьютере с Linux.
Это URL-адрес, который я предоставил своему приложению Java (обратите внимание, он предполагает порт по умолчанию)
url = "jdbc: mysql: // localhost / pickupgames"
Моим первым подозрением было то, что я использую порт не по умолчанию
Поэтому я попытался найти порт, на котором работает сервер MySQL
Я попробовал каждый трюк, упомянутый в Как проверить, на каком порту работает MySQL
Но не повезло!
ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ, КАК "ПОРТ";
Это показывает порт 0
netstat -tlnp вообще не показывает mysql
/etc/my.cnf У него нет записи порта
telnet localhost 3306 не подключается
И в случае, если вам интересно, работает ли сервер mysql или нет, это так. И я точно знаю, потому что я смог войти с помощью команды mysql.
# ps -ef | grep 'mysql'
root 31839 27662 0 00:49 pts / 3 00:00:00 grep mysql
root 32452 1 0 апр02? 00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-network
mysql 32504 32452 0 апр02? 00:00:06 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid - Пропустить внешнюю блокировку --socket=/var/lib/mysql/mysql.sock --skip-grant-tables --skip-network
Обратите внимание на параметр --skip-network
Это как-то связано с проблемой?
mysql> SELECT HOST, USER из mysql.user, где user = 'admin';
+ ----------- + ------- +
| ХОСТ ПОЛЬЗОВАТЕЛЬ |
+ ----------- + ------- +
| местный хост | админ |
+ ----------- + ------- +
Имеет ли вышеуказанное какое-либо отношение
Любое объяснение, почему я не могу подключиться к серверу MySQL на порт 3306 по Telnet?
Или почему это доцент появляется под netstat?
Любое предложение о том, следует ли мне попробовать дальше?
2 ответа
Обратите внимание на параметр --skip-network
Да, очень вероятно, причина проблемы. Удалите skip-network и добавьте "bind-address=127.0.0.1" вместо этого в my.cnf.
Я предполагаю, что java соединяется только через сеть и не использует сокетные соединения, что вы делаете с помощью инструментов mysql cli.
Сервер MySQL предварительно настроен.
Это почти так же, как не настроен. Безопасность будет плохой, SQL MODE будет плохим, производительность будет плохой, он просто не готов к производству или тестированию.
Просто начните читать руководство и создайте хорошую конфигурацию. И не забудьте про резервные копии, mysqldump тоже нуждается в настройке. По умолчанию он не создает резервные копии представлений, хранимых процедур и событий. Не рассчитывайте на них, если вы не проверили свои резервные копии.