我的Heroku Postgres数据库用于我的应用程序。我可以很容易地使用从Heroku的Heroku Postgres数据库的只读访问
psql $(heroku config:get DATABASE_URL -a my_app)
psql (9.6.1)
SSL connection (protocol: TLSv1.2, cipher: ECDSE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
d5i032ahpfiv07=>
,默认情况下提供DATABASE_URL
,该用户似乎有充分的机会来更新和删除表
d5i032ahpfiv07=> SELECT
table_name,
string_agg(privilege_type, ', ') as privileges
FROM information_schema.role_table_grants
WHERE table_schema = 'public'
AND grantee = current_user
GROUP BY 1
;
table_name | privileges
-----------------------------------+---------------------------------------------------------------
articles | INSERT, TRIGGER, REFERENCES, TRUNCATE, DELETE, UPDATE, SELECT
comment_flags | TRIGGER, INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES
comment_likes | TRUNCATE, REFERENCES, TRIGGER, INSERT, SELECT, UPDATE, DELETE
comments | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER
communities | TRIGGER, REFERENCES, TRUNCATE, DELETE, UPDATE, SELECT, INSERT
.....
访问psql
壳我很想成立数据库中的“只读”用户,这样人们可以查看这些数据,而不必担心运行“DROP TABLE”或其他破坏性命令。
我该如何设置Heroku Postgres上的只读用户?
谢谢!
谢谢,这是一个不错的解决方案。小型后续行动:如果有人不小心对追随者发出了破坏性命令,我将不得不重建它的数据?如果发生这种情况,我该如何提醒(或手动检查)?我确信有一些方法可以将追随者的状态与领导者进行比较? – user2490003
我猜测这是不可能的,因为它是只读的,因此破坏性的命令可以在追随者上运行,但我也只是想知道同样的事情。 – manisha