我安装了PostgreSQL 9数据库(从Oracle10g迁移),我对用户/角色管理感到困惑.当我使用CREATE USER或者CREATE ROLE或通过Navicat工具创建新用户时,创建的用户可以看到所有数据库!他真的可以联系他们!虽然他不能从表中选择任何数据,但他可以看到表对象和序列等.我试图撤销连接特权,但没有效果.我被期待新用户没有特权,也看不到任何东西.我真的不知道为什么他能.
Lek*_*eyn 13
来自http://www.postgresql.org/docs/9.2/static/sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS(强调我的):
PostgreSQL为某些类型的对象授予默认权限
PUBLIC.PUBLIC默认情况下,不对表,列,模式或表空间授予任何权限.对于其他类型,默认权限授予PUBLIC如下:CONNECT和CREATE TEMP TABLE为数据库 ;EXECUTE职能特权; 和USAGE语言特权.当然,对象所有者既可以REVOKE默认也可以明确授予权限.(为了最大限度地提高安全性,请REVOKE在创建对象的同一事务中发出;然后没有其他用户可以使用该对象的窗口.)此外,可以使用ALTER DEFAULT PRIVILEGES命令更改这些初始默认权限设置.
要删除CONNECT数据库上所有未指定用户的所有权限(包括),请使用:
REVOKE ALL PRIVILEGES ON DATABASE <database> FROM public;
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
14041 次 |
| 最近记录: |