为什么PostgreSQL中的新用户可以连接到所有数据库?

前端之家收集整理的这篇文章主要介绍了为什么PostgreSQL中的新用户可以连接到所有数据库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我安装了Postgresql 9数据库(从Oracle10g迁移),我对用户/角色管理感到困惑.当我使用sql命令(如CREATE USER或CREATE ROLE)或Navicat工具创建新用户时,创建的用户可以看到所有数据库!他真的可以联系他们!虽然他无法从表中选择任何数据,但他可以看到表对象和序列等.我试图撤销连接特权但没有效果.我被期待新用户没有特权,也看不到任何东西.我真的不知道为什么他能.
http://www.postgresql.org/docs/9.2/static/sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS(强调我的):

Postgresql grants default privileges on some types of objects to PUBLIC. No privileges are granted to PUBLIC by default on tables,columns,schemas or tablespaces. For other types,the default privileges granted to PUBLIC are as follows: CONNECT and CREATE TEMP TABLE for databases; EXECUTE privilege for functions; and USAGE privilege for languages. The object owner can,of course,REVOKE both default and expressly granted privileges. (For maximum security,issue the REVOKE in the same transaction that creates the object; then there is no window in which another user can use the object.) Also,these initial default privilege settings can be changed using the 07001 command.

删除数据库上所有未指定用户的所有权限(包括CONNECT),请使用:

REVOKE ALL PRIVILEGES ON DATABASE <database> FROM public;

也可以看看:

> PostgreSQL: View database connect permissions
> http://wiki.postgresql.org/wiki/Shared_Database_Hosting

猜你在找的Postgre SQL相关文章