我已经在服务器上和XAMP本地托管了一个PHP应用程序,并且我也在同一台服务器上托管了一个数据库。
当尝试与我的数据库建立连接时,我实例化了一个新的mysqli对象:
$mysqli = new mysqli(HOST, USER, PASS, MY_DB);
这些常量的值对于我的本地和远程应用程序是相同的,但由于某种原因它们仅在XAMP上使用时才起作用;我被用户拒绝访问权限#39;当尝试从服务器连接时,我不知道问题可能是什么。
抱歉我的英文不好,谢谢你的帮助:)
答案 0 :(得分:1)
有两个选项:要么绑定到远程IP而不是本地,要么搞砸了权限。
<强> 1。绑定IP地址
如果您按照有关如何允许远程访问的在线教程,您可能会将配置选项bind-adress
设置为您的外部IP。这意味着,您的服务器将仅在外部绑定,而不在内部环回(127.0.0.1
/ localhost
)上绑定。
您所要做的就是:
/etc/mysql/my.cnf
)bind-adress
并将其设置为0.0.0.0
<强> 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;它会起作用。