如何检查apache或mysql是否拒绝传入请求

时间:2018-09-11 14:37:26

标签: mysql apache mysqli

我有一个远程MySQL数据库,我正尝试通过Web服务器连接到该数据库。

尝试通过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调试此类问题的一般工作流程。

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

编辑: 这是我的apache conf:

<Directory />
   Options FollowSymLinks
   AllowOverride All
   Require all denied
</Directory>

<Directory /usr/share>
   AllowOverride All
   Require all granted
</Directory>

<Directory /var/www/>
   Options Indexes FollowSymLinks
   AllowOverride All
   Require all granted
</Directory>

这是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设置为2002并且  mysqli_connect_error()设置为Connection refused

2 个答案:

答案 0 :(得分:0)

您是否尝试过用主机名交换主机地址(45.77.xx.xxx)?

当我遇到相同的问题时(尽管我的是在本地主机上),我将主机IP从127.0.0.1更改为有效。您可能需要输入主机名而不是IP地址。

答案 1 :(得分:0)

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