开发者社区> 问答> 正文

大家好, 我有PG上的两个问题想请大家帮我设计一下。

1. 我们的PG数据在不同的城市有几百个未来会上千个。现在有个需求就是有三十几个人需要有数据库的访问权限,这三十几个人分成只读用户和全权用户。我的理解 建立这三十几个用户,就要建立三十几个对应的schema,对吧?虽然他们都不需要。有只建用户不建schema的方法吗?

2. 我们要记录这三十个用户登陆数据库的情况,比如什么时候登陆运行了什么SQL,这些记录要保留一年。不知道PG有没有自带的类似这样的功能?

(问题来源:postgresql学习交流群)

展开
收起
ImSoo 2018-10-25 09:06:35 2254 0
2 条回答
写回答
取消 提交回答
  • 阿里巴巴-淘宝-新制造-高级技术专家,PostgreSQL、Clojure、FreeBSD等技术爱好者

    看问题描述,你是要直接开通PG数据库的直连用户?

    • 问题1:不需要创建schema,用create user xxx创建用户即可,相应的权限用grant来赋予;
    • 问题2:如果空间不是问题,可以考虑修改postgresql.conf的日志选项log_statement = 'all',这样就会把所有执行的语句都输出到日志文件中,配置如下:
    log_destination = 'csvlog'
    log_directory = 'pg_logs'
    log_filename = 'postgresql-%Y-%m-%d.log'
    log_rotation_age = 1d
    log_statement = 'all'

    按照上面的配置,日志会输出到$PGDATA/pg_logs/postgresql-YYYY-MM-DD.log文件中,一天一个文件。

    例如,我用redraiment用户在postgres数据库中执行了三条SQL,日志中得到结果如下:

    2018-07-09 22:13:57.746 CST,"redraiment","postgres",11009,"[local]",5b436da3.2b01,1,"",2018-07-09 22:13:55 CST,3/9,0,日志,00000,"语句: create table users (id bigserial primary key, name text);",,,,,,,,,"psql"
    2018-07-09 22:13:58.969 CST,"redraiment","postgres",11009,"[local]",5b436da3.2b01,2,"",2018-07-09 22:13:55 CST,3/10,0,日志,00000,"语句: insert into users (name) values ('Joe'), ('Alice'), ('Wiki');",,,,,,,,,"psql"
    2018-07-09 22:14:00.546 CST,"redraiment","postgres",11009,"[local]",5b436da3.2b01,3,"",2018-07-09 22:13:55 CST,3/11,0,日志,00000,"语句: select * from users;",,,,,,,,,"psql"
    2019-07-17 23:10:06
    赞同 展开评论 打赏
  • 哈哈哈还好还好

    把mysql日志保存到oss不就可以了吗


    不带类似功能

    2019-07-17 23:10:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PolarDB PG核心特性介绍 立即下载
阿里云PostgreSQL、PPAS、HDB for PG生 立即下载
SQL Sever迁移PG经验 立即下载