我在创建PostgreSQL只读用户时遇到了问题。
我希望用户ckan_default能在数据库datastore_default中创建表。 而且我希望readonlyuser能够读取由ckan_default在datastore_default中创建的表。 我希望这个规则适用于由ckan_default创建的表,而不仅仅是已经创建的表。
我阅读了这篇文章 如何在PostgreSQL中创建只读用户,但是对于将要创建的表格它要么没有起作用,要么我尝试过了。
有关更多详细信息和完整脚本,请查看 pastebin http://pastebin.com/psDifhwd。
我希望用户ckan_default能在数据库datastore_default中创建表。 而且我希望readonlyuser能够读取由ckan_default在datastore_default中创建的表。 我希望这个规则适用于由ckan_default创建的表,而不仅仅是已经创建的表。
GRANT CONNECT ON DATABASE datastore_default TO readonlyuser;
GRANT USAGE ON SCHEMA public TO readonlyuser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonlyuser;
ALTER DEFAULT PRIVILEGES FOR USER readonlyuser IN SCHEMA public GRANT SELECT ON TABLES TO readonlyuser;
实际上我运行的完整脚本是
sudo -u postgres psql postgres -f /tmp/set_permissions.sql
--content of /tmp/set_permissions.sql
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE USAGE ON SCHEMA public FROM PUBLIC;
GRANT CREATE ON SCHEMA public TO ckan_default;
GRANT USAGE ON SCHEMA public TO ckan_default;
GRANT CREATE ON SCHEMA public TO ckan_default;
GRANT USAGE ON SCHEMA public TO ckan_default;
REVOKE CONNECT ON DATABASE ckan_default FROM readonlyuser;
GRANT CONNECT ON DATABASE datastore_default TO readonlyuser;
GRANT USAGE ON SCHEMA public TO readonlyuser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonlyuser;
ALTER DEFAULT PRIVILEGES FOR USER ckan_default IN SCHEMA public
GRANT SELECT ON TABLES TO readonlyuser;
我阅读了这篇文章 如何在PostgreSQL中创建只读用户,但是对于将要创建的表格它要么没有起作用,要么我尝试过了。
有关更多详细信息和完整脚本,请查看 pastebin http://pastebin.com/psDifhwd。