ERROR 1045(28000)信息是由於權限的問題。這個ERROR分爲兩種狀況:mysql
第一種:sql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),這種狀況是沒有用密碼直接登陸,這時須要輸入密碼數據庫
第二種:ide
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES),這種狀況是用了密碼了,可是,密碼不對或者是本地用這個用戶名和密碼沒有權限鏈接登陸工具
下面主要說一下,針對第二種狀況如何解決:spa
先說一下個人使用場景:首先,在安裝好mysql後利用mysqladmin工具,設置了用戶名root和密碼123456後,利用這個用戶名和密碼,登陸後,進入mysql數據庫,而後,利用:blog
mysql>grant all on openfire.* to mysql@'%' identified by '123456';ip
mysql>flush privileges;it
mysql>exit;table
而後,利用新用戶名mysql和密碼123456登陸:
mysql -umysql -p123456 回車,出現了第二種狀況。
此時,咱們利用root用戶登陸,發現沒有任何問題,而後,咱們輸入如下Sql語句查看下數據庫存儲用戶的表:
mysql>use mysql;
mysql>select host,user from user;
注意: //@"%" 表示對全部非本地主機受權,不包括localhost。不建議設爲本機IP,防止IP變化。
經過這個sql語句查看一下,咱們發現,mysql用戶在本機(localhost或者127.0.0.1)上經過mysql用戶沒法鏈接數據庫,因而咱們再次利用grant從新爲mysql用戶賦予權限
mysql>grant all on openfire.* to mysql@localhost identified by '123456';
mysql>flush privileges;
mysql>exit;
再次利用mysql用戶登陸,這時候能夠成功登陸。個人這種狀況是本機不能用特定用戶鏈接數據庫。
另一種就是密碼錯誤時的狀況:
用戶登陸時,首先會在數據庫user表裏查找這個表,那麼是否是可繞過這張權限表呢。答案是能夠的。咱們先停下mysql服務,service mysqld stop,而後,找到my.cnf文件,在[mysqld]下方,添加:
skip-grant-tables,以下所示:
保存後,重啓mysql的服務,而後,登陸時,不輸入密碼,能夠成功登陸。