解決 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
要注意大小寫喔!
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
要注意大小寫喔!