“连接失败:拒绝访问用户'root'@'localhost'(使用密码:YES)”从PHP函数
我写了一些php网页使用的函数,以便与mysql数据库进行交互。 当我在我的服务器上testing他们时,我得到这个错误:
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
我可以在我的电脑上使用它们(使用XAMPP),并且可以使用服务器中的命令行浏览数据库的表格。 相反,网页无法连接。 我检查了密码,但没有结果,这是正确的(否则我不能从命令行login到MySQL)。
该函数的调用如下:
$conn = new mysqli("localhost", "root", "password", "shop");
我有什么东西在我的服务器? 谢谢
编辑:PHP版本5.3.3-7 + squeeze1 mysql版本:5.1.49-3都在debian上
我用这种方式解决了:我用root用户名login
mysql -u root -p -h localhost
我创build了一个新的用户
CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';
然后我创build了数据库
CREATE DATABASE shop;
我授予此数据库的新用户权限
GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';
然后我注销了root并login了新用户
quit; mysql -u francesco -p -h localhost
我使用脚本重build了我的数据库
source shop.sql;
就是这样..现在从PHP的工作没有问题的电话
$conn = new mysqli("localhost", "francesco", "some_pass", "shop");
感谢所有的时间:)
在root @ localhost的数据库中是否有用户帐户条目? 在MySQL中,您可以通过主机设置不同的用户帐户权限。 可能有几个不同的账户与他们连接的主机相同的名称。 最常见的是root@127.0.0.1和root @ localhost。 这些可以有不同的密码和权限。 确保root @ localhost存在并具有您所期望的设置。
我敢打赌,根据你的解释,这是问题所在。 从另一台PC连接使用与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
这里有一个类似的问题,有一些有用的答案, 不能使用旧的身份validation连接到MySQL 4.1+
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
对于使用旧密码的账户,这将返回16,对于使用新密码的账户,这将返回41(对于根本没有密码的账户,则返回0,您也可以考虑这些)。 或者使用MySQL前端的用户pipe理工具(如果有的话)或者
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword'); FLUSH Privileges
我也有这个问题。 但这是因为另一个原因。 我的密码以字符$
…开头,例如$MyPassword
我已将其更改为#MyPassword
,问题已解决。
这里也许?
我相信这个代码应该是:
$connect = new mysqli("host", "root", "", "dbname");
因为root没有密码。 (using password: YES)
说“你正在使用这个用户的密码”
尝试初始化您的variables,并在连接对象中使用它们:
$username ="root"; $password = "password"; $host = "localhost"; $table = "shop"; $conn = new mysqli("$host", "$username", "$password", "$table");
在PHPmyAdmin (WAMP)上编辑您的权限,请注意,您的密码和用户名尚未创build。 所以创build或编辑它,它可能与你的SQL连接在你的PHP工作。 希望它的作品
小费:
注释掉pid和套接字文件,如果你不能连接到服务器.. mysql可能与不正确的pid和/或套接字文件连接,所以当你尝试通过命令行连接到服务器时,它“看起来”不正确的pid /套接字文件…
###注释掉pid和套接字文件,如果无法连接到服务器..
#PID文件=在/ var /运行/ MySQL的/ mysqld.pid #sockets=的/ var / lib中/ MySQL的/的mysql.sock
最有可能的是它不能正确识别你的用户。 根@本地。 select您的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
你可以在你的bashconfiguration文件~/.bash_profile
或~/.bash_rc
保存一个别名
这不是一个错误,这是你的错,你在连接文件中写错码。 你简单的写为
$con = mysql_connect($host,$user,$password);
如果你写的worng代码例如
$con = mysql_connect($host,$password,$user);
那么它显示
Access denied for user ''@'localhost' (using password: YES)
所以保持享受….