";连接失败:拒绝用户';的访问;root'@';localhost';(使用密码:是)


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

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

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

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

函数调用如下:

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

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

编辑:PHP版本5.3.3-7+scruze1mysql版本:5.1.49-3二者都在debian 上

我用这种方式解决了:我使用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@localhost?在MySQL中,您可以按主机设置不同的用户帐户权限。可能有几个不同的帐户具有相同的名称以及它们连接的主机。最常见的是root@127.0.0.1和root@localhost.这些可以具有不同的密码和权限。确保root@localhost存在,并且具有您期望的设置。

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

从您到目前为止所说的,PHP5.3中的MySQL驱动程序在连接到旧的MySQL 4.1版本时出现问题。看看http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx

这里有一个类似的问题,有一些有用的答案,无法使用旧的身份验证连接到MySQL 4.1+

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

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

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges

我也遇到了这个问题。但这是因为另一个原因。我的密码以字符$开头。。。例如$MyPassword我把它改成了#MyPassword,问题就解决了。

简单。

打开examplep控制面板->配置->用记事本编辑my.ini。现在将其添加到[mysqld]下面

skip-grant-tables

保存。启动apache和mysql。

我希望能帮助你

也许在这里

我认为代码应该是:


$connect = new mysqli("host", "root", "", "dbname");

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

提示:

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

###注释掉pid和套接字文件,如果您无法连接到服务器
#pid文件=/var/run/mysql/mysqld.pid#socket=/var/lib/mysql/mysql.socket

很可能它没有正确识别您的用户。root@localhost.选择您的MAMP正在使用的Mysql版本。

/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql

实际上,我在电脑上写了一个别名,这样我就不必记得如何进入bin目录了。

alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'

这让我可以运行这个:

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

您可以在bash配置文件~/.bash_profile~/.bash_rc 中保存别名

可能是因为没有设置密码,您将密码作为参数传递。请尝试在连接期间提交密码参数。。

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

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

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