茶包專欄:MySQL 使用 ROOT 也無法 GRANT 權限 Access denied

2016-07-08 MySQL, 茶包專欄

首先小弟必須先說,在技術領域上如果遇上很不可思議的問題,通常都是人為居多,即使是你已知的觀念都有可能因此而顛覆

 

在這篇的茶包在一開始小弟也覺得不可思議,但找到問題後,真的是感觸良多。

 

此篇所遇到的狀況是在某一台資料庫主機上使用 ROOT 登入,但是在 GRANT 的時候一直出現

mysql> GRANT ALL PRIVILEGES ON DBNAME.* TO USER@localhost;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

 

首先遇到這個狀況先檢查了一下

mysql> SHOW GRANTS FOR root@localhost \G;

SHOW GRANTS FOR root@localhost \G;
*************************** 1. row ***************************
Grants for root@localhost: GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '******' WITH GRANT OPTION
*************************** 2. row ***************************
Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

確認權限是 GRANT ALL

 

 

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user \G;

*************************** 1. row ***************************
      host: localhost
      user: root
  password: **********************
Grant_priv: Y
Super_priv: Y
*************************** 2. row ***************************

在確認一次 Grant_priv / Super_priv 都是 Y

 

權限都沒有問題,操作也都OK,但是在 GRANT 就是失敗,真是鬼打牆

最後在執行 mysql_upgrade 之後就可以 GRANT 了

$ mysql_upgrade -uroot -p 
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
Running 'mysqlcheck with default connection arguments
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.servers                                      OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
OK

 

 

這台資料庫是 MySQL 5.5,原來是因為資料庫升級了而造成 mysql 資料庫損壞

 

在官方是有提醒只要是升級都必須要執行 mysql_upgrade

在官方是有提醒只要是升級都必須要執行 mysql_upgrade

在官方是有提醒只要是升級都必須要執行 mysql_upgrade

 

 

這點非常的重要!!

 

One Reply to “茶包專欄:MySQL 使用 ROOT 也無法 GRANT 權限 Access denied”

  1. Allen表示:

    很重要所以要說三次

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱