如果我使用“ localhost”作为主机名连接到数据库,则可以使用
$flag = [
'database_host' => 'localhost',
'database_port' => '',
'database_name' => 'dbdemo',
'database_user' => 'userdemo',
'database_password' => 'uijk',
'database_table' => 'tabledemo',
];
$link = mysqli_connect($flag['database_host'],$flag['database_user'],$flag['database_password'],$flag['database_name']);
但是当我使用他的IP(通过echo $_SERVER['SERVER_ADDR'];
获得)来设置主机名时,它会返回错误
Connection refused
我很困惑,这基本上不是一回事吗?
答案 0 :(得分:-1)
在Mariadb中,例如在MySql中,用户可以有权从localhost连接,但不允许从另一个主机连接。
因此,您必须通过localhost连接到数据库并运行以下命令:
SELECT `user`, `host` FROM `mysql`.`user`;
这将向您显示从哪个主机允许哪些用户 那么您必须从任何地方添加具有许可的用户,或者yu知道该IP
// from everywhere
CREATE USER 'userdemo'@'%';
GRANT USAGE ON *.* TO 'userdemo'@'%';
// or from somewhere like
CREATE USER 'userdemo'@'192.168.%'
GRANT USAGE ON *.* TO 'userdemo'@'192.168.%';
// or if you know the exact ip
CREATE USER 'userdemo'@'92.168.1.1';
GRANT USAGE ON *.* TO 'userdemo'@'192.168.1.1';
// in the end
FLUSH PRIVILEGES;