我正在尝试找到一种方式,可以在用户登录Postgres数据库时立即得知。是否有一种定义触发器的方法,以便在用户登录数据库时触发?或者是否有一个表格或系统视图会在任何人登录数据库时更新?
我正在尝试找到一种方式,可以在用户登录Postgres数据库时立即得知。是否有一种定义触发器的方法,以便在用户登录数据库时触发?或者是否有一个表格或系统视图会在任何人登录数据库时更新?
我认为在 SQL 级别上没有任何东西可以识别登录事件(即你无法查询视图,也无法创建触发器)。
但是,你可以编写一个服务器端模块(用 C 语言),通过 ClientAuthentication_hook
拦截登录事件。该钩子在服务器尝试对用户进行身份验证之后、发送响应之前被调用。
在 Postgres wiki 上有一个使用 ClientAuthentication_hook
的示例。你还可以在 Postgres 自己的 contrib 模块 中找到几个此钩子的示例。
pg_stat_activity
,它反映了所有当前连接。但您需要以极高的频率轮询它。 - user330315