我正在尝试使用 PHP 连接 CRUD Simple,连接 MySQL 中的数据库。
问题是,在 mysql_connect 函数中,在主机变量中,如果我传递字符串 localhost ,它会连接并显示数据库的信息。问题是当我输入MySQL数据库所在主机的IP时,它显示权限被拒绝。
我已经使用以下命令将权限发送给用户 carlos
:
GRANT ALL PRIVILEGES ON * . * TO 'carlos'@'%';
这是连接代码,其余代码不影响,因为这组是程序的第一行:
$link = mysqli_connect("192.168.0.18:3306", "carlos", "abc123", "distribuidos") or die ('Error. ' . mysqli_connect_error());
使用本地主机,连接工作:
$link = mysqli_connect("localhost", "carlos", "abc123", "distribuidos") or die ('Error. ' . mysqli_connect_error());
应该注意的是,我还使用已打开的端口配置了防火墙,在本例中为 3306
,如果我使用命令 mysql -u carlos -h 192.168.来自另一台机器的 0.18 -p
连接我没有问题。
我使用的是 php 7.3 和 CentOS 7。
解决方案
我的解决方案是在 Linux 上执行下一个命令:sudo setebool -P httpd_can_network_connect 1
最佳答案
您可以检查的三件事
- 请检查您的端口是否打开
或
- 删除/etc/mysql/my.cnf 中的绑定(bind)地址 127.0.0.1
或
- apache 未配置为外部访问。尝试
sudo setsebool -P httpd_can_network_connect 1
关于php - PHP与MYSQL连接拒绝权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55036851/