MySQL:select command denied to user for table 'proc'案例
阿新 • • 發佈:2019-01-08
使用EMS MySQL Manager Pro(3.4.0.1)連線MySQL 5.6.20時,報“SELECT command denied to user [email protected] for table 'proc'
很是納悶,後面使用同樣的許可權,發現使用命令工具mysql -h xxxx -u username -p連線時不會報錯。個人猜測是因為EMS MySQL Manager(3.4.0.1)連線資料庫時,會去查詢mysql.proc下的物件(儲存過程、函式等)。於是在測試伺服器開啟了MySQL查詢日誌,然後在客戶端電腦使用EMS MySQL Manager Pro連線到資料庫(Connect to Database),然後檢查查詢日誌具體資訊,發現如下所示,EMS MySQL Manager連線資料庫時確實會去查詢mysql.proc, 而因為許可權問題,所以報如上錯誤:
#tail -60f /var/lib/mysql/mytestlnx02.log
/usr/sbin/mysqld, Version: 5.6.41 (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
190108 14:54:07 111 Connect [email protected] on
111 Query SHOW VARIABLES
111 Query SHOW STATUS
111 Quit
112 Connect [email protected] on MyDB
112 Query BEGIN
112 Query show collation
112 Query SHOW VARIABLES
112 Query SHOW ENGINES
112 Query SHOW FULL TABLES
112 Query SHOW FULL TABLES
112 Query SHOW COLUMNS FROM `mysql`.`proc`
112 Query SHOW INDEX FROM `mysql`.`proc`
112 Query select p.`db`, p.`name`, p.`type`, p.`specific_name`, p.`language`, p.`sql_data_access`, p.`is_deterministic`, p.`security_type`, p.`param_list`, p.`returns`, p.`body`, p.`definer`, p.`created`, p.`modified`, p.`sql_mode`, p.`comment` from `mysql`.`proc` as p where p.`type` = 'PROCEDURE' and p.`db`='MyDB'
解決方案:
1:使用root賬號登入資料庫,執行下面SQL語句即可解決問題(使用具體賬號替換usename)
grant select on mysql.proc to username
2: 在對應的Register Database裡"Display Options" 取消"Procedures"、"Functins"、"UDFS"也可以。這樣EMS MySQL Manager連線資料庫時,不會去查詢相關的儲存過程、函式等物件。就不會報這個錯誤。但是呢,這樣就會在工具裡面看不到這些物件。