是否可以通过指定数据库而不是表来限制用户对 postgresql 数据库的访问?
我明白这句话:
GRANT ALL ON tableName TO joeuser
使该用户能够访问该表并执行他们想做的任何操作。但是,我想允许用户访问包含
databaseName
的数据库 tableName
(以及 databaseName
中的所有表),但不是我的 postgresql 服务器上的所有数据库。
不完全是,不。向数据库授予权限:
GRANT ALL ON DATABASE databaseName TO joeuser;
不会自动授予数据库中对象的权限;并且向数据库中当前的每个对象授予权限不会自动向将来可能创建的任何对象授予权限。
目前还不清楚你到底想要什么。您可能正在尝试找到一条 SQL 语句来处理您现在和以后的所有权限。 SQL 权限通常不会那样工作。
根据版本的不同,您可以通过两种方式控制与数据库的连接。
您可以更改表、视图、序列和函数的默认权限。 (9.0+版本)
ALTER DEFAULT PRIVILEGES
是 SQL 的 PostgreSQL 扩展。
试试这个:
将 DataBase.TableName 上的选择授予用户;