2016年7月8日 星期五

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

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

 

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



 

此篇所遇到的狀況是在某一台資料庫主機上使用 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

 

 

這點非常的重要!!

 

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

沒有留言:

張貼留言