PostgreSQLで権限を設定することについて少し混乱しています。
私にはこれらの役割があります:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication | {}
meltemi | Create role, Create DB | {rails}
rails | Create DB, Cannot login | {}
myapp | | {rails}
およびデータベース:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+--------+----------+-------------+-------------+-------------------
myapp_production | rails | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
...
ユーザーmyapp
は、myapp_production
レコードの追加と削除をデータベースにクエリしても問題ありません。私meltemi
も同じデータベースを照会できるようにしたいと思います。そこで、rails
データベースを所有するロールを作成し、の両方meltemi
とのmyapp
メンバーを作成しましたrails
。しかし、それでもpermission denied for relation
エラーが発生します。Meltemi
スキーマを表示できますが、DBをクエリできません。
私はテーブルの所有者であることに気付いた(\dt
コマンドで)myapp
:
List of relations
Schema | Name | Type | Owner
--------+-------------------+-------+-------
public | events | table | myapp
public | schema_migrations | table | myapp
...
public | users | table | myapp
...
テーブルはORM(RailsのActiveRecordの移行)を介して作成されました。
(MySQLや私が使用した他のものとは対照的に)PostgreSQLでは承認が非常に異なることを知っています。さまざまなユーザーがアクセスできるようにデータベースを設定するにはどうすればよいですか。いくつかはCRUDできるはずですが、他の人は読み取りなどしかできないかもしれません...
助けてくれてありがとう。申し訳ありませんが、これは非常に基本的な質問ですが、自分で答えを見つけることができませんでした。
myapp
代わりに使用するつもりだったと思うrails
?myapp
テーブルを所有しているため(指定しなかったため、移行が必要です)。とにかく、名前を変更してmyapp
から、railsアプリがDBに接続するために使用myapp_group
する新しいユーザーmyapp
を作成した場合、それはかなり理にかなっています。Makemyapp
と、既存のmeltemi
、両方のmyapp_group
役割のメンバー。しかし、次の移行を実行するとどうなりますか。myapp
もう一度問題を再現することによって所有されるのではないでしょうか?!?