使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:“SELECT command denied to user xxx@xxx.xxx.xxx.xxx 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 mytest@letnb00021 on
111 Query SHOW VARIABLES
111 Query SHOW STATUS
111 Quit
112 Connect mytest@letnb00021 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'