php - MySQL - 本地连接但能够远程连接时访问被拒绝

标签 php mysql mysqli

我有一个 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)。

您所要做的就是:

  1. 使用 root 权限打开您的配置文件(通常是 /etc/mysql/my.cnf)
  2. 找到设置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/

相关文章:

php - Live Search 在 keyup 后不删除 'old' 数据

javascript - 如何使用 javascript 和 PHP 动态触发 onChange 事件

MySQL - 无法连接到本地 MYSQL 服务器...错误 2002?

mysql - mysqli 中更新字段的返回值

php - 如何从数据库表的中间开始并循环?

php - 这个 MySQL 查询有什么问题?

javascript - 当鼠标至少移动一次时创建 PHP session

php - 使用 Laravel 5.1 获取过去一小时内添加的行

mysql - Laravel 4 和 Eloquent, hasMany 关系似乎不起作用

php - 在PHP中加载数据infile不起作用