mysql的root使用者無法給普通使用者授權問題處理

花花蘑菇發表於2017-01-13
先看錯誤現象:

很奇怪,root使用者應該不可能無法授權普通使用者。看提示像是說密碼錯誤。但是實際上密碼沒有問題。
決定去看看mysql.user表中root@localhost這個使用者的許可權是怎麼樣的。在mysql.user表中記錄了與全域性相關的許可權資訊。這個全域性許可權不是指擁有所有的許可權,它具體指的是擁有該MYSQL伺服器所有資料庫物件的許可權。
mysql> select * from mysql.user where User='root' and Host='localhost'\G;

可以看到Grant_priv是N。很顯然,因為root@localhost這個使用者沒有授予許可權的許可權,所以之前的操作報錯。修改一下Grant_priv的值為Y,重新整理下,然後退出重新登入。問題就解決了。

mysql> update mysql.user set Grant_priv='Y' where User='root' and Host='localhost';

mysql> flush privileges;



總結:這個問題不是很常見。但是這個問題提供了一種解決思路,在許可權出問題時,應如何入手。mysql中許可權的粒度由粗到細分別是全域性,資料庫,表,列,程式。可以用一句話來概括:分配某個使用者從某臺機器連線進來訪問某個資料庫下的某張表的某個列的某部分記錄的許可權。記錄與全域性相關的許可權資訊就是mysql.user表中。記錄資料庫級別的許可權資訊是mysql.db表。記錄表物件的授權資訊記錄是mysql.tables_priv表中。列級許可權記錄在mysql.column_priv表中。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28497416/viewspace-2132403/,如需轉載,請註明出處,否則將追究法律責任。

相關文章