连接到本地主机工作,但不ip

时间:2019-02-18 16:45:31

标签: php mysqli mariadb

如果我使用“ 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

我很困惑,这基本上不是一回事吗?

1 个答案:

答案 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;