我正在设置具有多个架构的 Postgres DB (AWS/RDS),并希望进行精细的访问控制。
每个模式都与一个应用程序相关。通常,应用程序将具有“写入”用户(INSERT、UPDATE、DELETE 等),但某些应用程序只需要从不同模式读取(SELECT)。
受到这个 AWS 博客的启发:https://aws.amazon.com/blogs/database/managing-postgresql-users-and-roles/ 我的 readusers 查询 writeusers 创建的表时遇到“权限被拒绝”的问题,即使我更改默认权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA someschema GRANT SELECT ON TABLES TO some_read_role;
Run Code Online (Sandbox Code Playgroud)
重现步骤:
使用 masteruser postgres 创建 AWS RDS postgres (10.6) 实例
(DB postgres) 作为用户 postgres:
CREATE DATABASE somedb LC_COLLATE 'da_DK.utf8' LC_CTYPE 'da_DK.utf8' ENCODING 'UTF8' TEMPLATE template0;
Run Code Online (Sandbox Code Playgroud)(DB somedb) 作为用户 postgres:
REVOKE ALL ON DATABASE somedb FROM PUBLIC;
CREATE SCHEMA clients;
CREATE ROLE clients_read_role;
GRANT CONNECT ON DATABASE somedb TO clients_read_role;
CREATE ROLE clients_write_role;
GRANT …Run Code Online (Sandbox Code Playgroud)我已经将Lumen 5.4.6配置为使用Mailgun发送电子邮件.我看到了其他几个答案,但它们不完整或有不必要的陈述,或者它们比需要的更复杂.
我在下面提供了完整而详细的步骤,以便让Lumen与Mailgun一起使用,就像我发现的一样简单和干净.
如果您知道更简单,更清洁,更优雅的方式,请添加您的答案和评论.