mysql root 访问被拒绝_mysql-“连接失败:用户'root'@'localhost'(使用密码:是)的访问被拒绝”...

当尝试通过PHP连接到MySQL数据库时,遇到'Access denied for user 'root'@'localhost' (using password: YES)'的错误。问题在于服务器上可能缺少root用户的特定权限配置。一种解决方案是创建新用户并授予所有权限,或者检查root用户@'localhost'是否存在并拥有正确的权限设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql-“连接失败:用户'root'@'localhost'(使用密码:是)的访问被拒绝”

这个问题在这里已有答案:

MySQL错误1045(28000):用户'bill'@'localhost'的访问被拒绝(使用密码:是)                                     35个答案

我写了一些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 + squeeze1mysql版本:5.1.49-3都在debian上

gc5 asked 2019-11-05T07:08:03Z

11个解决方案

76 votes

我以这种方式解决了:我使用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");

感谢您的时间:)

gc5 answered 2019-11-05T07:09:04Z

10 votes

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

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

queso answered 2019-11-05T07:09:37Z

7 votes

到目前为止,您所说的听起来像是一个问题,其中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

Jack Murdoch answered 2019-11-05T07:10:18Z

5 votes

我也有这个问题。 但这是由于另一个原因。我的密码以$字符开头...例如 $MyPassword我将其更改为#MyPassword,问题已解决。

LowLevel answered 2019-11-05T07:10:43Z

4 votes

也许在这里?

我认为代码应为:

(using password: YES)

因为root没有密码。 (using password: YES)说“您正在为此用户使用密码”

Pseudo Nym answered 2019-11-05T07:11:29Z

1 votes

小费:

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

#pid-file = / var / run / mysql / mysqld.pid#socket = / var / lib / mysql / mysql.sock

Dutch Glory answered 2019-11-05T07:12:03Z

1 votes

很可能是无法正确识别您的用户。 root @ localhost。选择您的MAMP使用的Mysql版本。

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

实际上,我在计算机上写了一个别名,因此不必记住如何进入bin目录。

~/.bash_profile

这使我可以运行此命令:

~/.bash_profile

您可以在bash个人资料中保存别名~/.bash_profile或~/.bash_rc

camdixon answered 2019-11-05T07:13:06Z

1 votes

简单。

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

skip-grant-tables

救。 启动apache和mysql。

希望对你有帮助

Miku jessi answered 2019-11-05T07:13:47Z

1 votes

可能在那里没有设置密码,并且您正在传递密码作为参数。尝试在连接过程中省略password参数。

Shrinivas Manjithaya answered 2019-11-05T07:14:16Z

0 votes

编辑您对PHPmyAdmin(WAMP)的特权,请注意,尚未创建您的密码和用户名。 因此,请创建或编辑它,使其与php中的sql连接一起使用。希望能奏效

Adesina Yomi answered 2019-11-05T07:14:45Z

-1 votes

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

$username ="root";

$password = "password";

$host = "localhost";

$table = "shop";

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

Greg answered 2019-11-05T07:15:12Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值