&引用;连接失败:拒绝用户访问';根'@';本地主机';(使用密码:是)";从php函数

&引用;连接失败:拒绝用户访问';根'@';本地主机';(使用密码:是)";从php函数,php,mysql,access-denied,Php,Mysql,Access Denied,我编写了一些php网页使用的函数,以便与mysql数据库交互。当我在服务器上测试它们时,会出现以下错误: "Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 我可以在我的pc上使用它们(使用XAMPP),并且可以使用服务器中的命令行浏览数据库的表。但是,该网页无法连接。我已经检查了密码,但没有结果。这是正确的(否则我无法从命令行登录到mysql) 函数的调用如下所示: $conn

我编写了一些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+1 mysql版本:5.1.49-3
在debian上尝试初始化变量并在连接对象中使用它们:

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

尝试初始化变量并在连接对象中使用它们:

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

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


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

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


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

根据您目前所说的,PHP5.3中的MySQL驱动程序在连接到较旧的MySQL版本4.1时出现问题。看看

这里有一个类似的问题,有一些有用的答案

对于使用旧密码的帐户,这将返回16,对于使用新密码的帐户,这将返回41(对于完全没有密码的帐户,这将返回0,您可能还需要处理这些问题)。 使用MySQL前端的用户管理工具(如果有)或


从您到目前为止所说的情况来看,PHP5.3中的MySQL驱动程序在连接到较旧的MySQL版本4.1时出现问题。看看

这里有一个类似的问题,有一些有用的答案

对于使用旧密码的帐户,这将返回16,对于使用新密码的帐户,这将返回41(对于完全没有密码的帐户,这将返回0,您可能还需要处理这些问题)。 使用MySQL前端的用户管理工具(如果有)或

我这样解决: 我使用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");
感谢大家的时间:)

我这样解决了: 我使用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");

感谢所有您的时间:)

PHPmyAdmin(WAMP)上编辑您的权限,请注意,您的密码和用户名尚未创建。因此,一定要创建或编辑它,以便它可以与php中的sql连接一起工作。
希望它能工作

编辑您在PHPmyAdmin(WAMP)上的权限,注意您的密码和用户名尚未创建。因此,一定要创建或编辑它,以便它可以与php中的sql连接一起工作。 希望它能起作用

也许在这里? 我认为代码应该是:


$connect=newmysqli(“主机”、“根”、“数据库名”)
因为root用户没有密码。
(使用密码:是)
在这里说“您正在使用此用户的密码”

? 我认为代码应该是:


$connect=newmysqli(“主机”、“根”、“数据库名”)

因为root用户没有密码。
(使用密码:YES)
表示“您正在使用此用户的密码”

我也遇到了这个问题。但这是因为另一个原因。 我的密码以字符
$
开头。。。e、 g.
$MyPassword

我把它改成了我的密码,问题就解决了。

我也遇到了这个问题。但这是因为另一个原因。 我的密码以字符
$
开头。。。e、 g.
$MyPassword
我已将其更改为
#MyPassword
,问题已解决。

提示:

如果无法连接到服务器,请注释掉pid和套接字文件。。 mysql可能正在连接错误的pid和/或套接字文件, 因此,当您尝试通过命令行连接到服务器时,它“看起来” 在不正确的pid/套接字文件中…

### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock ###如果无法连接到服务器,请注释掉pid和套接字文件。
#pid文件=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock提示:

如果无法连接到服务器,请注释掉pid和套接字文件。。 mysql可能正在连接错误的pid和/或套接字文件, 所以,当您尝试通过命令li连接到服务器时