1. 程式人生 > >MySQL5.7中mysql.user表變化

MySQL5.7中mysql.user表變化

問題描述
邏輯全備MySQL5.6.24後,匯入到MySQL5.7.18. 經測試發現部分應用賬號授權有問題,無法正常訪問資料庫。

錯誤資訊
query failed: [1142] SELECT command denied to user ‘monitor’@’10...100’ for table ‘history_uint’ [select clock,ns,value from history_uint where itemid=103172 and clock<=1501496763 and clock>1501493163 order by clock desc limit 1]

排查過程
1.但這些使用者許可權在MySQL5.6中是正常的。由於是在同一臺主機上進行的升級,排除了網路問題。
2.嘗試給使用者授權,出現如下錯誤
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON zabbix_pro.* TO ‘zabbix_pro’@’%’ ;
ERROR 1805 (HY000): Column count of mysql.user is wrong. Expected 45, found 43. The table is probably corrupted

解決方法
1.刪掉從5.6中恢復過來的mysql.user表。
2.獲取5.7中相同版本的表結構,重建mysql.user表。
3.用 pt-show-grants 獲取MYSQL5.6的使用者許可權
4.在5.7中應用這些授權

通過比較發現
1.MySQL5.7中mysql.user表比MySQL5.6少了1個欄位(Password)
2.MySQL5.7中mysql.user表比MySQL5.6多了3個欄位(password_last_changed,password_lifetime,account_locked)