原因:數(shù)據(jù)庫(kù)密碼不對(duì)
解決步驟:
1.在MySQL的my.ini中加入skip-grant-tables
2.cmd進(jìn)入MySQL的bin目錄下,
mysql -h localhost -u root -p
連接數(shù)據(jù)庫(kù),即使不輸入密碼也會(huì)連接
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'root';
更改密碼后退出臣淤,重新連接不報(bào)錯(cuò)沟优,成功
參考文獻(xiàn):
1.PHP錯(cuò)誤:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
使用PHP連接MySQL 8的時(shí)候,可能會(huì)發(fā)生如標(biāo)題所示的錯(cuò)誤:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
發(fā)生這種錯(cuò)誤荆针,是由于MySQL 8默認(rèn)使用了新的密碼驗(yàn)證插件:caching_sha2_password,而之前的PHP版本中所帶的mysqlnd無(wú)法支持這種驗(yàn)證软啼。解決這個(gè)問(wèn)題,有兩種辦法延柠。
一種辦法是升級(jí)PHP支持MySQL 8的新驗(yàn)證插件祸挪。
PHP 7.2.8和PHP 7.1.20已經(jīng)可以支持caching_sha2_password,直接連接MySQL 8贞间。
截止PHP 7.0.31和PHP 5.6.37還無(wú)法支持caching_sha2_password贿条,不知道后續(xù)版本是否會(huì)做出支持。
可以通過(guò)phpinfo()函數(shù)了解當(dāng)前安裝的PHP是否支持caching_sha2_password:
如果不能升級(jí)PHP增热,可以在MySQL 8中創(chuàng)建(或修改)使用caching_sha2_password插件的賬戶整以,使之使用mysql_native_password,這樣先前版本的PHP就可以連接使用了峻仇。
在CREATE USER時(shí)公黑,使用IDENTIFIED WITH xxx_plugin BY ‘password‘,比如:
CREATE USER ‘native‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘password!2#4‘;
使用ALTER USER修改已有賬戶的驗(yàn)證插件:
ALTER USER ‘native‘@‘localhost‘ IDENTIFIED WITH mysql_native_password
或
ALTER USER ‘native‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘new_password‘;
采用前一種方式摄咆,賬戶的密碼將被清除凡蚜;BY子句將為賬戶設(shè)置新的密碼。
/etc/my.cnf配置文件中吭从,有一行:
# default-authentication-plugin=mysql_native_password
請(qǐng)刪除注釋符號(hào)“#”并重新啟動(dòng)mysqld使之生效朝蜘,此后創(chuàng)建的賬戶均默認(rèn)使用mysql_native_password。
如果您完成MySQL Server的安裝之后涩金,在沒(méi)有啟動(dòng)過(guò)mysqld服務(wù)的情況下修改/etc/my.cnf配置谱醇,那么啟動(dòng)mysqld之后創(chuàng)建的‘root‘@‘localhost‘賬戶也是使用mysql_native_password插件的。
就這些步做,希望有幫助副渴。
2.mysql Access denied for user root@localhost錯(cuò)誤解決方法總結(jié)
問(wèn)題重現(xiàn)(以下討論范圍僅限Windows環(huán)境):
C:\AppServ\MySQL> mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user
'root'@'localhost' (using password: YES)
解決方法:
編輯mysql配置文件my.ini(在mysql的安裝目錄下,我的在D:\Program
Files\MySQL\MySQL Server 5.0\my.ini)辆床,在[mysqld]這個(gè)條目下加入 skip-grant-tables
保存退出后重啟mysql
1.點(diǎn)擊“開(kāi)始”->“運(yùn)行”(快捷鍵Win+R)佳晶。
2.停止:輸入 net stop mysql
3.啟動(dòng):輸入 net start mysql??
這時(shí)候在cmd里面輸入mysql -u root -p就可以不用密碼登錄了,出現(xiàn) password:的時(shí)候直接回車可以進(jìn)入讼载,不會(huì)出現(xiàn)ERROR 1045 (28000),但很多操作都會(huì)受限制中跌,因?yàn)槲覀儾荒躦rant(沒(méi)有權(quán)限)咨堤。
繼續(xù)按下面的流程走:
1.進(jìn)入mysql數(shù)據(jù)庫(kù):
mysql> use mysql;
Database changed
2.給root用戶設(shè)置新密碼:
mysql> update user set password=password("新密碼") where user="root";
Query OK, 1 rows affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
3.刷新數(shù)據(jù)庫(kù)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4.退出mysql:
mysql> quit;
Bye
改好之后,再修改一下my.ini這個(gè)文件漩符,把我們剛才加入的 "skip-grant-tables"這行刪除一喘,保存退出再重啟mysql就可以了。