Не могу подключиться к серверу 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 тоже нуждается в настройке. По умолчанию он не создает резервные копии представлений, хранимых процедур и событий. Не рассчитывайте на них, если вы не проверили свои резервные копии.

Другие вопросы по тегам