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