96

如何让活动用户通过 SQL 连接到 postgreSQL 数据库?这可能是用户 ID 或用户数。

4

3 回答 3

120

(问题)你没有得到那个信息吗

pg_user 中选择 * ;

或使用视图pg_stat_activity

select * from pg_stat_activity;

添加:

观点说:

每个服务器进程一行,显示数据库 OID、数据库名称、进程 ID、用户 OID、用户名、当前查询、查询的等待状态、当前查询开始执行的时间、进程启动的时间以及客户端的地址和端口号。除非参数 stats_command_string 已关闭,否则报告当前查询数据的列可用。此外,这些列仅在检查视图的用户是超级用户或与拥有所报告进程的用户相同时才可见。

您不能过滤并获取该信息吗?这将是数据库上的当前用户,您可以使用开始执行时间来获取最近 5 分钟的所有查询......

类似的东西。

于 2009-01-21T09:50:46.400 回答
40

使用 balexandre 的信息:

SELECT usesysid, usename FROM pg_stat_activity;
于 2009-01-21T09:58:02.907 回答
10

OP 询问连接到特定数据库的用户:

-- Who's currently connected to my_great_database?
SELECT * FROM pg_stat_activity 
  WHERE datname = 'my_great_database';

这将为您提供各种有趣的信息(正如其他人所提到的),例如

  • 用户 ID(列usesysid
  • 用户名 ( usename)
  • 客户端应用程序名称(appname),如果它设置该变量 -psql这样做:-)
  • IP 地址 ( client_addr)
  • 它处于什么状态(与状态和等待状态相关的几列)
  • 和大家最喜欢的,当前正在运行的 SQL 命令 ( query)
于 2019-07-18T05:54:21.837 回答