mysql - 如何检查 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
设置为2002
并
mysqli_connect_error()
设置为Connection refused
解决方案
授予对 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;
推荐阅读
- c++ - 尝试声明列表迭代器时“找不到标识符”
- python - Python,Pandas 数据框,合并具有相同两列值的数据框的行并在行中聚合数据
- vue.js - VueJS - 仅将 CSS 类应用于单击的元素
- android - 如何插入“一对一”房间数据库
- r - 字符向量和列表之间的R超几何测试,循环计算p值
- c++ - zeromq 具有高延迟
- c# - Blazor 输入检查框
- list - 我怎样才能找到一个知道是字符串形式的名称的列表?
- docker - 这是否可以在 docker create container 之后添加 ipc 选项
- javascript - 构建和导出 TailwindCSS 和 NextJS 时遇到问题