找回密码
 注册
查看: 511|回复: 1

[支援请求]PostgreSQL,起步阶段最后的问题

[复制链接]
发表于 2003-11-26 13:06:49 | 显示全部楼层 |阅读模式
问题组<一>

默认情况下,用PostgreSQL创建一个数据库,无论谁,只要能连接到这个时数据库,就可以在里面创建表、视图、索引。这对安全、对管理都不利。如何设置时间看的权限,做到除了所有者之外的任何人都不具备创建表之类的权限?

M$的$QL$erver2000里,每个数据库都有明确的建表、删表等权限,PostgreSQL是否支持?如果支持该怎么设置?我查过文档,里面的grant和remoke都是针对表的。有人说,grant和remoke都能对数据库用,那么我需要以下几个SQL语句:

一个归“test_user_1”所有的数据库“test_db_1”,不希望“test_user_1”以外的任何用户进行写相关的操作;

一个归“test_user_1”所有的数据库“test_db_1”,不希望“test_user_1”以外的任何用户进行读相关的操作;

一个归“test_user_1”所有的数据库“test_db_1”,不希望“test_user_2”以外的任何用户进行读相关的操作;

一个归“test_user_1”所有的数据库“test_db_1”,允许“test_user_2”以外的任何用户进行读相关的操作。

问题组<二>

通过文档我知道,有哪些用户能够连接到哪些数据库,可以由“pg_hba.conf”决定,并由“pg_reload”使之生效。

host all all 192.168.0.0 255.255.255.0 md5
表示局域网内任何一台机器上的合法用户都能够通过md5口令连接到任何一个数据库;

host test_db_3 all 0.0.0.0 0.0.0.0 password
表示任何地方的任何用户都能用非加密口令访问数据库“test_db_3”;

local test_db_2 sameuser trust
表示数据库“test_db_2”能通过本机控制台由与数据库同名的用户连接,且不需要口令。

但是,这些只指明了哪些人可以访问,没有说明如何禁止某用户访问某数据库。

如果我需要让“test_user_62”以外的所有用户都能访问除了“TFW”以外的数据库,该怎么做?

如果我需要让“test_user_62”以外的所有用户都不能访问除了“test_db_public”以外的数据库,又该怎么做?
 楼主| 发表于 2003-11-27 11:18:36 | 显示全部楼层
第二组问题已经在“ http://laser.free-bsd.org/index.php ”解决,发现只要观念转一点,玩转“pg_hba.conf”没有想象的困难。

通过试验,我发现:

“pg_hba.conf”所有里没有说明的都是未授权的;
所有记录都在上一条记录的基础上进行的;
“all”并不代表全部,只代表上面的记录没有说明的那部分。

大家给看看对不对。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-3-1 04:51 , Processed in 0.023752 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表