无法从 Java 应用程序连接到 MySQL 服务器

无法从 Java 应用程序连接到 MySQL 服务器

这是在 VPS\Centos 服务器上。MySQL 服务器已预先配置。

我在 Tomcat 上运行 Java 应用程序

我的 Java Web 应用程序无法连接到 MySQL 服务器。

我收到一个错误 -
“原因:java.net.ConnectException:连接被拒绝”

我怀疑这是一个配置问题,而不是编码问题,因此我把这个问题发布在了 ServerFault 上
,是的,同一个 web 应用程序能够连接到另一个 Linux 机器上的 MySQL

这是我向 Java 应用程序提供的 URL(注意 - 它假定使用默认端口)

url =“jdbc:mysql://localhost/pickupgames”

我首先怀疑的是,我在非默认端口上运行,
所以我试图找到 mySQL 服务器正在运行的端口

我尝试了如何检查 mysql 在哪个端口上运行
但没有运气!

显示类似‘PORT’的全局变量;
这显示端口 0

网络状态监测 根本不显示 mysql

/etc/my.cnf 没有端口入口

telnet 本地主机 3306 无法连接

如果你想知道 mysql 服务器是否正在运行,它是在运行的,而且我可以肯定地知道,因为我已经能够使用 mysql 命令登录。

# ps -ef|grep ‘mysql’
root 31839 27662 0 00:49 pts/3 00:00:00 grep mysql
root 32452 1 0 Apr02 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
mysql 32504 32452 0 Apr02 ? 00:00:06 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --skip-grant-tables --skip-networking

请注意--skip-networking 参数
这与这个问题有关系吗?

mysql> 从 mysql.user 中选择主机、用户,其中 user='admin';
+-----------+-------+
| 主机 | 用户 |
+-----------+-------+
| 本地主机 | 管理员 |
+-----------+-------+

上述内容有关系吗?

能否解释一下为什么我无法通过 telnet 连接到端口 3306 上的 mysql 服务器?

或者为什么它没有出现在 netstat 下?

关于我下一步应该尝试什么,有什么建议吗?

答案1

请注意--skip-networking参数

是的,这很可能是问题的原因。删除 skip-networking 并在 my.cnf 中添加“bind-address=127.0.0.1”。

我猜测 java 仅通过网络连接而不使用套接字连接,这是使用 mysql cli 工具所做的。

答案2

MySQL 服务器已预先配置。

这几乎与未配置相同。安全性会很差,SQL MODE 会很差,性能会很差,它还未准备好进行生产或测试。

开始阅读手动的并创建一个良好的配置。别忘了备份,mysqldump 也需要调整。默认情况下,它不备份视图、存储过程和事件。除非您已经测试过备份,否则不要依赖它们。

相关内容