代码之家  ›  专栏  ›  技术社区  ›  Johan Bresler

如何让活动用户通过SQL连接到postgreSQL数据库?

  •  73
  • Johan Bresler  · 技术社区  · 17 年前

    2 回复  |  直到 14 年前
        1
  •  119
  •   a_horse_with_no_name    10 年前

    (问题)你不知道这些信息吗

    从中选择* pg_user

    或者使用视图 pg_stat_activity :

    select * from pg_stat_activity;
    

    补充:

    每个服务器进程一行,显示数据库OID、数据库名称、进程ID、用户OID、, 用户名 客户地址和端口号 . 除非关闭参数stats_command_string,否则报告当前查询数据的列可用。此外,仅当检查视图的用户是超级用户或与报告进程的所有者相同时,这些列才可见。

    你不能过滤并获取这些信息吗?这将是数据库上的当前用户,您可以使用开始执行时间来获取过去5分钟内的所有查询,例如。。。

    差不多吧。

        2
  •  40
  •   Sven Lilienthal    17 年前

    SELECT usesysid, usename FROM pg_stat_activity;
    
        3
  •  9
  •   Tom Hundt Daoctor    7 年前

    OP要求连接用户 到特定的数据库 :

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

    all sorts of juicy info (正如其他人所提到的)例如

    • 用户ID(列) usesysid )
    • 用户名( usename
    • 客户端应用程序名称( appname ),如果它费心设置该变量-- psql 是否:-)
    • IP地址( client_addr )
    • 它处于什么状态(与状态和等待状态相关的两列)
    • query