Это на сервере 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'
корень 31839 27662 0 00:49 точек / 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
Обратите внимание на - параметр пропуска-сети
Это как-то связано с проблемой?
mysql> ВЫБРАТЬ ХОСТ, ПОЛЬЗОВАТЕЛЬ из mysql.user, где user = 'admin';
+ ----------- + ------- +
| ХОЗЯИН | ПОЛЬЗОВАТЕЛЬ |
+ ----------- + ------- +
| localhost | админ |
+ ----------- + ------- +
Имеет ли вышеперечисленное значение?
Любое объяснение, почему я не могу подключиться к серверу mysql на порту 3306 по telnet?
Или почему доцент появляется в netstat?
Любые предложения о том, что мне следует попробовать дальше?
Обратите внимание на параметр --skip-network
Да, скорее всего, причина проблемы. Удалите пропускную сеть и добавьте вместо нее "bind-address = 127.0.0.1" в my.cnf.
Я предполагаю, что java подключается только через сеть и не использует подключения к сокетам, что вы делаете с инструментами mysql cli.
Сервер MySQL предварительно настроен.
То есть почти то же самое, что не настроено. Безопасность будет плохой, SQL MODE будет плохой, производительность будет плохой, он просто не готов ни для производства, ни для тестирования.
Просто начните читать руководство и создать хорошую конфигурацию. И не забывайте о резервных копиях, mysqldump также требует настройки. По умолчанию он не выполняет резервное копирование представлений, хранимых процедур и событий. Не рассчитывайте на них, если вы не проверили свои резервные копии.