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

时间:2014-06-26 10:55:45

标签: php mysql mysqli

我已经在服务器上和XAMP本地托管了一个PHP应用程序,并且我也在同一台服务器上托管了一个数据库。

当尝试与我的数据库建立连接时,我实例化了一个新的mysqli对象:

$mysqli = new mysqli(HOST, USER, PASS, MY_DB);

这些常量的值对于我的本地和远程应用程序是相同的,但由于某种原因它们仅在XAMP上使用时才起作用;我被用户拒绝访问权限#39;当尝试从服务器连接时,我不知道问题可能是什么。

抱歉我的英文不好,谢谢你的帮助:)

2 个答案:

答案 0 :(得分:1)

有两个选项:要么绑定到远程IP而不是本地,要么搞砸了权限。

<强> 1。绑定IP地址

如果您按照有关如何允许远程访问的在线教程,您可能会将配置选项bind-adress设置为您的外部IP。这意味着,您的服务器将仅在外部绑定,而不在内部环回(127.0.0.1 / localhost)上绑定。

您所要做的就是:

  1. 使用root权限打开配置文件(通常为/etc/mysql/my.cnf
  2. 找到设置bind-adress并将其设置为0.0.0.0

  3. <强> 2。权限

    尝试通过终端向'<your user>'@'%'授予权限。 如果您不明白这意味着什么,请阅读GRANT手册here

    以下是从每个数据库的任何位置为用户提供超级用户权限的示例:

    GRANT ALL PRIVILEGES ON *.* TO '<your user>'@'%' WITH GRANT OPTION;
    

    我不建议在生产服务器上使用上述内容,因为它存在很大的安全风险。

答案 1 :(得分:0)

在您正在使用的此代码中

$mysqli = new mysqli(HOST, USER, PASS, MY_DB);

我认为在localhost(xampp)中执行时,您将替换&#39; HOST&#39;使用您的域名&#39;或者&#39; IP地址&#39;但

当你在服务器上尝试应用程序和数据库在同一台服务器上时,你需要放置“主机”。 as&#39; localhost&#39;

尝试更换主机&#39;与&#39; localhost&#39;它会起作用。