这是在 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 也需要调整。默认情况下,它不备份视图、存储过程和事件。除非您已经测试过备份,否则不要依赖它们。