> select version(); +-----------------+ | version() | +-----------------+ | 5.6.23-72.1-log | +-----------------+ 1 row in set (0.01 sec)今天同事問我一個問題,想讓我看看某個數據庫用戶的權限問題,我登錄到服務器端之后,一切都很順利。
# mysql Logging to file '/home/mysql/query.log' Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 52625 Server version: 5.6.23-72.1-log Percona Server (GPL), Release 72.1, Revision 0503478一切都很正常,然后我準備看看連接到數據庫的線程情況。
> show processlist; ERROR 1227 (42000): Access denied; you need (at least one of) the PROCESS privilege(s) for this operation竟然拋出了這個奇怪的錯誤,如果想查看數據字典中的信息,也被禁止了。
> select user,host from mysql.user; ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user' 這個時候就很糾結了,我堂堂的root用戶竟然登錄不了MySQL了,別說給同事排除故障,自己都登錄不了了。
> show grants for root@'localhost'; ERROR 1141 (42000): There is no such grant defined for user 'root' on host 'localhost'這個時候我們停一下,在這個場景中,系統mysql命令直接連接進來的是root@localhost嗎?從錯誤日志來看不是,而從線程信息來看是,所以我們需要進一步分析一下,問題在哪里。