首页 > 解决方案 > 如何检查 MySQL 拒绝传入请求的原因

问题描述

我有一个远程 MySQL 数据库,我试图通过我的网络服务器连接到该数据库。

我尝试通过连接时遇到的错误mysqli

Connection refused 2002

我已经为远程连接调用了这个命令:

grant all on db.* to '<user>'@'<hostname>' identified by '<password>';

我希望我能在一些日志文件中从我的 MySQL 服务器中找到更详细的描述。问题是哪一个合适?

其他问题表明/var/log/mysql/error.log,但我在该文件中根本没有任何输出。我目前没有运行任何类型的防火墙。可能是我apache config的碍事,但我不知道如何检查这个,我想如果是这样的话,我不会得到2002 error,而是其他一些 apache 风格的错误消息。

我应该查看哪些调试日志?

这是php和mysql代码:

//define DB variables
define("DB_HOST", "45.77.xx.xxx");
define("DB_NAME", "login");
define("DB_USER", "root");
define("DB_PASS", "Correct_Password");

$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

echo mysqli_connect_error() . PHP_EOL;

echo $this->db_connection->connect_errno;

输出:

$this->db_connection->connect_errno设置为2002mysqli_connect_error()设置为Connection refused

标签: mysql

解决方案


授予对 mysql 中表或数据库的访问权限实际上与从给定主机连接的用户相关联,因此,当您 grant all on db.* to '<user>'@'<hostname>'从“主机名”连接时授予用户访问权限,这可能是您的问题。确保您连接的主机与您授予权限的主机相同,或者如果您需要打开对同一域中其他主机的访问权限,请使用、 或grant all on db.* to <user>'@'%.domain.name'...
检查您的授权。 Mysql error.log 文件通常只记录 mysql 启动时的错误。show grants for username;select user,host from mysql.user;


推荐阅读