在 Ubuntu 14 上以主-主-从配置运行的 MySQL 5.5
从其中一位主人那里,当以在数据库上具有(所有特权)但在其他地方没有其他特权的用户身份执行下面的查询时,此查询返回 0
SELECT COUNT(1) SlaveThreadCount
FROM information_schema.processlist
WHERE user='system user'
当对所有内容执行与 root 相同的用户 IE(所有权限)时,我得到了真正的奴隶计数。
我返回 0 而不是真正的 SlaveThreadCount(在这种情况下为 2)有什么特别的原因吗?
这是特权问题吗?
如果我在非 root 用户中没有 WHERE 的情况下运行查询,我只会看到我的进程。
SELECT * FROM information_schema.processlist
如果我以 root 用户运行它,那么我会看到所有进程。
所以绝对是权限问题,所以看起来我需要 PROCESS,只是回答了我自己的问题。
如果您拥有特定数据库的所有权限,则不能拥有PROCESS权限。为什么 ?PROCESS特权不是数据库级特权。这是全球特权。如何 ?
大约 2.5 年前,我回答了 How to grant super privilege to the user? 有人想要SUPER 权限,但只拥有数据库的所有权限。我通过提及全局授权和数据库级授权的存储方式进行了解释。简而言之,表中有一个名为
Super_priv
的列mysql.user
(存储全局授权)。该列不存在于mysql.db
(存储数据库级授权的位置)。同样的事情也适用于PROCESS特权。
Process_priv
表中有一列称为mysql.user
。该列不存在于mysql.db
.