我有一个 PHP 应用程序托管在服务器上和本地使用 XAMP,我还有一个数据库托管在同一台服务器上。
当尝试与我的数据库建立连接时,我实例化了一个新的 mysqli 对象,如下所示:
$mysqli = new mysqli(HOST, USER, PASS, MY_DB);
这些常量的值对于我的本地和远程应用程序是相同的,但出于某种原因,它们仅在 XAMP 上使用时才有效;尝试从服务器连接时出现“用户访问被拒绝”,我不知道可能是什么问题。
抱歉我的英语不好,感谢您的帮助:)
最佳答案
有两种选择:要么绑定(bind)到远程 IP 而不是本地 IP,要么你弄乱了权限。
<强>1。绑定(bind)IP地址
如果您遵循了关于如何允许远程访问的在线教程,您可能设置了配置选项 bind-adress
给你外部IP。这意味着,您的服务器将仅在外部绑定(bind),而不是在内部环回( 127.0.0.1
/localhost
)上绑定(bind)。
您所要做的就是:
- 使用 root 权限打开您的配置文件(通常是
/etc/mysql/my.cnf
) - 找到设置
bind-adress
并将其设置为0.0.0.0
<强>2。权限
尝试通过终端授予权限给'<your user>'@'%'
.
如果您不明白这意味着什么,请阅读 GRANT
说明书 here .
这是一个从任何地方为每个数据库的用户授予 super 用户权限的示例:
GRANT ALL PRIVILEGES ON *.* TO '<your user>'@'%' WITH GRANT OPTION;
我不建议在生产服务器上使用上述内容,因为它存在很大的安全风险。
关于php - MySQL - 本地连接但能够远程连接时访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24428623/