【问题标题】:Mysql all user processlist without root permission没有root权限的mysql所有用户进程列表
【发布时间】:2021-11-29 21:36:33
【问题描述】:

我需要 mysql 中的用户只运行一个查询

SHOW PROCESSLIST;

并在mysql中显示所有用户进程列表(如root用户)并且该用户没有其他访问权限

我需要这个用户只是为了调试查询。

我不希望 root 用户使用这个简单的查询!

有什么办法吗?

【问题讨论】:

  • 创建存储过程,其中拥有足够权限执行所需语句的帐户为OWNER,并设置SECURITY OWNER属性。当没有足够权限的用户执行该程序时,将使用所有者的权限执行。

标签: mysql permissions processlist


【解决方案1】:

https://dev.mysql.com/doc/refman/8.0/en/show-processlist.html 说:

如果您拥有 PROCESS 权限,您可以查看所有线程,甚至是属于其他用户的线程。否则(没有 PROCESS 权限),非匿名用户可以访问有关他们自己的线程的信息,但不能访问其他用户的线程,并且匿名用户无权访问线程信息。

让我们测试创建一个用户并只授予他们 PROCESS 权限:

mysql> create user 'testy'@'localhost' identified by 'testy';

mysql> grant process on *.* to 'testy'@'localhost';

mysql> exit

$ mysql -utesty -ptesty 

mysql> show processlist;
+----+-------+-----------+------+---------+------+----------+------------------+-----------+---------------+
| Id | User  | Host      | db   | Command | Time | State    | Info             | Rows_sent | Rows_examined |
+----+-------+-----------+------+---------+------+----------+------------------+-----------+---------------+
| 34 | testy | localhost | NULL | Query   |    0 | starting | show processlist |         0 |             0 |
+----+-------+-----------+------+---------+------+----------+------------------+-----------+---------------+

mysql> show grants;
+---------------------------------------------+
| Grants for testy@localhost                  |
+---------------------------------------------+
| GRANT PROCESS ON *.* TO 'testy'@'localhost' |
+---------------------------------------------+

是的,您可以创建一个没有 SUPER 权限的特殊用户,该用户可以查看进程列表。

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2022-10-05
    • 2013-11-18
    • 2018-10-15
    相关资源
    最近更新 更多