MySQL 8 是目前流行的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),被廣泛應(yīng)用于各類應(yīng)用程序的數(shù)據(jù)存儲(chǔ)與管理。然而,在使用 MySQL 8 時(shí),我們經(jīng)常會(huì)遇到各種報(bào)錯(cuò),需要進(jìn)行調(diào)試。
下面就介紹一種可能會(huì)遇到的錯(cuò)誤:項(xiàng)目中出現(xiàn)“Can't find any matching row in the user table”的提示,該如何解決。
mysql>grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option; ERROR 1133 (42000): Can't find any matching row in the user table
該錯(cuò)誤常常出現(xiàn)在我們對(duì) MySQL 管理用戶和權(quán)限的操作中,比如為用戶授權(quán)、調(diào)整權(quán)限等等。該錯(cuò)誤提示意味著數(shù)據(jù)庫找不到符合我們要求的用戶記錄。
解決這個(gè)問題的方法就是在用戶表中查找該用戶,如果不存在,則必須創(chuàng)建該用戶并授予相應(yīng)的權(quán)限。
mysql>use mysql; mysql>SELECT User, Host FROM user; mysql>CREATE USER 'root'@'%' IDENTIFIED BY 'password'; mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES;
完成以上操作后,再次嘗試授權(quán)即可:
mysql>GRANT ALL PRIVILEGES ON *.* to 'root'@'%' identified by 'password' with grant option; Query OK, 0 rows affected (0.01 sec)
綜上,項(xiàng)目中出現(xiàn)“Can't find any matching row in the user table”的錯(cuò)誤提示,通常是由缺少用戶或權(quán)限造成的。我們只需要查找并創(chuàng)建相應(yīng)的用戶和賦予權(quán)限即可解決該問題。