解決 MYSQL,ERROR 1045 (28000) using password: NO 和yes的方法

解決 MYSQL 登入時,ERROR 1045 (28000) using password: NO 的方法

 
透過終端機輸入指令 mysql -u root ,卻出現 
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 訊息。
改輸入 mysql -u root -p  強制輸入密碼,卻變成
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在網路上查詢了一下,發現問題似乎與 'root'@'localhost' ,帳號跟登入位置與密碼對應有關,也發現這問題十分氾濫,並似乎沒有個好的SOP解決流程,於是試了幾種方法,整理成以下心得:
===================================

1.首先,停止MYSQL 服務:
    #  /etc/init.d/mysql stop              or  #  stop mysql          or # service mysql stop
2.接著跳過授權表訪問,命令如下:
    # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
3.登錄 MYSQL:
    # mysql -uroot mysql   
    or
    # mysql -uroot mysql -p
    輸入 root 密碼,進入MYSQL。
    這裡若依舊跳出 ERROR 1045 (28000) 訊息,則請跳至文末的 A 步驟
4.重新寫入 root 密碼:
    mysql> UPDATE user SET Password=PASSWORD('輸入你 root 的新密碼') where USER='root';
5. 把 所有資料庫(含其下的所有資料表),授權給 root,從 localhost 上來,密碼為引號內數據  '*****'。 
    mysql> GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼'; 
6.更新權限!密碼若有更動,一定要執行此行指令。
    mysql> FLUSH PRIVILEGES;
7.離開 MYSQL
    mysql> quit
8.輸入密碼,正常進入 MYSQL。
    # mysql -uroot -p
===================================
A.直接使用 /etc/mysql/debian.cnf 文件中 [client] 提供的用戶名和密碼:
    # mysql -udebian-sys-maint -p
    輸入 [client] 中的密碼
    mysql> UPDATE user SET Password=PASSWORD('輸入你 root 的新密碼') where USER='root';     // 重新寫入 root 密碼
    mysql> GRANT all ON *.* TO root@'localhost' IDENTIFIED BY '輸入你 root 的密碼';      // 把 所有資料庫(含其下的所有資料表),授權給 root,從 localhost 上來,密碼為引號內數據  '*****'。 
    mysql> FLUSH PRIVILEGES;     // 更新權限!密碼若有更動,一定要執行此行指令。
    mysql> quit
    # mysql -uroot -p
    輸入密碼,正常進入 MYSQL。

===================================

以上兩種狀況我都遇過,依以上方式我的問題都解決了。
另外改好後,MYSQL 系統似乎需要一點時間更動,因為在終端機上MYSQL可進去了,網頁的 phpmyadmin 卻依舊進不去,SSH連也進不去,直到間隔了快 10 秒,才一切正常。




注1: 欲查詢MYSQL版本指令為 
    # mysql -V
      查詢PHP 版本指令為
    # php -v
      要注意大小寫喔!
posted @ 2017-06-23 14:47  自习室  阅读(4889)  评论(0编辑  收藏  举报