我有一个远程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
答案 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 启动时的错误。