“连接失败:用户'root'@'localhost'(使用密码:YES)的访问被拒绝”来自php函数

2022-08-30 09:20:37

我编写了一些php网页使用的函数,以便与mysql数据库进行交互。当我在服务器上测试它们时,我收到此错误:

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

我能够在我的PC上使用它们(使用XAMPP),并且我可以使用服务器中的命令行浏览数据库的表。但是,网页无法连接。我已经检查了密码,但没有结果。这是正确的(否则我无法从命令行登录到mysql)。

该函数的调用如下:

$conn = new mysqli("localhost", "root", "password", "shop");

我必须在服务器中设置某些内容吗?谢谢

编辑:PHP 版本 5.3.3-7+squeeze1 mysql 版本:5.1.49-3 两者都在 debian 上


答案 1

我以这种方式解决:我使用root用户名登录

mysql -u root -p -h localhost

我创建了一个新用户

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

然后我创建了数据库

CREATE DATABASE shop;

我为此数据库的新用户授予了权限

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

然后我注销了root并登录了新用户

quit;
mysql -u francesco -p -h localhost

我使用脚本重建了数据库

source shop.sql;

就是这样。。现在从php工作没有问题与调用

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

感谢大家抽出宝贵时间:)


答案 2

数据库中是否有用于root@localhost的用户帐户条目?在MySQL中,您可以按主机设置不同的用户帐户权限。可能有多个具有相同名称的不同帐户与它们连接的主机组合在一起。最常见的是root@127.0.0.1和root@localhost。这些可以具有不同的密码和权限。确保root@localhost存在并具有所需的设置。

根据你的解释,我愿意打赌,这就是问题所在。从另一台PC连接使用与root@localhost不同的帐户,我认为命令行使用root@127.0.0.1进行连接。


推荐