Postgres 备忘录

来源:互联网 发布:逆袭网络剧百度云 编辑:程序博客网 时间:2024/05/16 06:14
首先需要执行下面的SQL语句:
revoke create on schema public from public;
这是因为在PG中默认任何用户都可以在名称为public的schema中创建表,而只读用户是不允许创建表的,所以先要把这个权限回收。


创建名称为readonly的只读用户:
create user readonly with password 'query';
然后把在public这个schema下现有的所有表的select权限赋给readobly,并执行下面的SQL命令:
grant select on all tables in schema public to readonly;
上面的命令只是把现有的表的权限给了readonly用户,如果此时创建了表,readonly用户还是不能读,需要使用下面的SQL把所建表的select权限也给用户readonly:

alter default privileges in schema public grant select on tables to readonly;


注意:上面的过程只是给schema下的名为public的表赋予了只读权限,如果想让这个访问其他schema下的表,需要重复执行如下语句:【需要先连接数据库 】
grant select on all tables in schema other_schema to readonly;
alter default privileges in schema other_schema grant select on tables to readonly;


Postgres ERROR: could not open file for reading: Permission denied

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO www;ALTER DEFAULT PRIVILEGES IN SCHEMA public    GRANT USAGE, SELECT ON SEQUENCES TO www;

must be owner of relation

grant userB to userA;



一、命令说明
    psql是PostgreSQL的交互终端,等同于Oracle中的sqlplus。执行该命令连接数据库时, 默认的用户和数据库是postgres
    
二、命令参数
    -c 命令     :指定psql执行一条SQL命令(用双引号括起),执行后退出。
    -d 数据库名 :待连接的数据库名称。 
    -f 文件名   :使用文件中的数据作为命令的输入源,在处理完文件后,psql结束并退出。 
    -h 主机名   :声明正在运行服务器的主机名 
    -l          :列出所有可用的数据库,然后退出。 
    -L 文件名   :除了正常的输出源之外,把所有查询记录输出到文件。 
    -o 文件名   :将所有查询重定向输出到文件。 
    -p 端口     :指定PostgreSQL服务器的监听端口。 
    -q          :让psql安静地执行所处理的任务。缺省时psql将输出打印欢迎和许多其他信息。 
    -U 用户名   :以指定用户代替缺省用户与数据库建立连接。
    -V          :输出版本信息, 然后退出
    
三、内置命令
    #\c 数据库名    :切换数据库,相当于mysql的use dbname
    #\q             :退出 psql
    #\l             :列举数据库,相当于mysql的show databases
    #\dt            :列举表,相当于show tables
    #\d 表名        :查看表结构,相当于desc tblname
    #\conninfo      :显示当前连接的相关信息
    #\timing        :切换命令计时开关 (目前是 关闭)
    #\! [命令]      :在 shell 里执行命令或开启一个shell
    #\a             :在非对齐模式和对齐模式之间切换
    #\C [标题]      :设定资料表标题或取消
    #\f [分隔符]    :显示或设定非对齐模式的栏位分隔符号
    #\H             :切换 HTML 输出模式 (目前是 关闭)
    #\o [文件名]    :将全部查询结果写入档案或 |管道"pipe"
    #\db [数据库名] :列出表空间
    #\du [数据库名] :列出角色
    #\p             :显示查询缓存区的内容,即打印上一个SQL命令
    #\cd [目录]     :改变目前的工作目录
    #\i 文件名      :从文件中执行命令
    #\echo [字串]   :将字串写至标准输出
    #\w [文件名]    :将上一个SQL命令输出到指定的文件或管道"pipe"
    #\g [文件名]    :将上一个SQL命令的结果输出到指定文件或管道"pipe"

    #\o [文件名]    :将后面的全部查询结果输出到指定文件或管道"pipe",直到遇到下一个单独的 #\o

    #\unset 变量名称 : 清空(删除)内部变量

    #\encoding [编码名称] :显示或设定客户端编码

    #\password [用户名称] :安全地为用户改变口令   
    #\prompt [变量名称]   :提示用户设定内部变量 
    #\set [变量名称 [变量值]] :设定内部,若无参数则列出全部变量