PostgreSQL给新用户授权select角色

✅ 切换到你的数据库并以超级用户登录(例如 postgres):

admin#localhost: ~$ psql -U postgres -d lily

✅ 创建登录的账号机密吗

lily=> CREATE USER readonly_user WITH PASSWORD 'xxxxxxxxxxx'; 

✅ 确认你授予了这个表的读取权限:

lily=> GRANT SELECT ON actor_codes TO readonly_user;
✅ 如果有多个表要一起授权:
lily=> GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

✅ 确保 schema 权限也没问题(你可能已经做过):

lily=> GRANT USAGE ON SCHEMA public TO readonly_user;

🔁 可选:一劳永逸让未来新表也有权限

lily=> ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

🔍 验证权限是否生效

✅ 重新用 readonly_user 登录测试:
admin#localhost: ~$ psql -U readonly_user -d lily
lily=> SELECT * FROM actor_codes LIMIT 1;
              cid              |     code      
-------------------------------+---------------
 sfefesfwsafe| kil/1/acc
(1 row)

如果这样之后还报错,可以检查:

-- 看表归属 schema(假如不是 public,需要改 GRANT 语句里的 schema 名)
lily=> SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_name = 'actor_codes';
 table_schema | table_name  
--------------+-------------
 public       | actor_codes
(1 row)
### PostgreSQL 中不同用户权限的管理和配置 #### 权限分类概述 在 PostgreSQL 数据库中,每个数据库对象都有一个所有者,默认情况下仅该所有者和超级用户可以对这些对象执行任意操作。为了使其他角色也能够使用特定的对象,则需为其分配相应的权限[^1]。 #### 实例级别权限管理 实例级别的权限主要由 `postgresql.conf` 和 `pg_hba.conf` 文件定义,用于规定哪些客户端可以通过何种认证方法连接到服务器。这涉及到网络层面的安全策略设定,比如限定允许访问的服务端口以及源地址范围等。 #### 数据库级权限授予 针对整个数据库的操作许可可通过以下命令实现: ```sql GRANT {CREATE | CONNECT | TEMPORARY} ON DATABASE database_name TO role_specification; ``` 例如,要给予某个用户在其拥有的数据库内创建新表的能力,可运行如下SQL语句: ```sql GRANT CREATE ON DATABASE my_database TO user_role; ``` 此命令使得被授予权限的角色可以在指定数据库里建立新的模式(schema)或表格(table)[^3]。 #### Schema (模式) 级别的权限控制 对于模式内的资源访问权,通常涉及两个方面:一是能否浏览其中已存在的实体;二是是否有能力在此基础上新增数据结构。具体做法如下所示: ```sql GRANT USAGE ON SCHEMA schema_name TO role_specification; ``` 上述指令让目标账户获得读取并引用某模式下各项资产的权利。如果还需进一步开放写入功能,则应追加更多细粒度的授权声明。 #### 对象层面上的具体权利调整 当聚焦于单个关系型数据集合时(如一张具体的表),则可以根据实际需求精确地指派 CRUD 类型的动作特权给定个体或者群体。下面是一些常见的例子: - **查询** (`SELECT`) :获取记录内容。 ```sql GRANT SELECT ON table_schema.table_name TO specific_user; ``` - **插入** (`INSERT`) : 添加新条目 ```sql GRANT INSERT ON table_schema.table_name TO another_group; ``` - **更新** (`UPDATE`) : 修改现有字段值 ```sql GRANT UPDATE(column_list) ON table_schema.table_name TO yet_another_person; ``` - **删除** (`DELETE`) : 移除行 ```sql GRANT DELETE ON table_schema.table_name TO someone_else; ``` 以上每种情况都对应着不同的业务场景下的安全考量,合理规划有助于保护敏感资料的同时不影响正常的工作流程。 #### 特殊权限处理 除了常规的数据存取外,某些时候还需要考虑更为特殊的权力转移,像是否准许他人成为管理员或是具备创建额外用户的资格等问题。这类高层次的功能往往伴随着较高的风险等级,在实施前务必审慎评估必要性和潜在影响[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunson_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值