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 마이그레이션)을 통해 작성되었습니다.
PostgreSQL에서 권한 부여가 매우 다르다는 것을 알고 있습니다 (MySQL 및 내가 사용한 다른 것과는 대조적 임). 다른 사용자가 액세스 할 수 있도록 데이터베이스를 어떻게 설정해야합니까? 일부는 CRUD 할 수 있어야하지만 다른 일부는 읽기 만 할 수 있습니다 ...
도움을 주셔서 감사합니다. 죄송합니다. 이것이 매우 기본적인 질문이지만 답을 직접 찾지 못했습니다.
myapp대신에 사용하려고 생각했을 것rails입니까?myapp테이블을 소유하고 있기 때문에 (이를 지정하지 않았 으므로 마이그레이션이 있어야합니다). 어쨌든, 이름myapp을 바꾼myapp_group다음myapprails 앱이 DB에 연결하는 데 사용할 새로운 사용자 를 만들면 다소 의미 가 있습니다. 역할myapp의 기존meltemi구성원과 기존 구성원을 모두 만듭니다myapp_group. 그러나 다음 마이그레이션을 실행하면 어떻게됩니까?myapp다시 문제를 다시 만들어서 소유하지 않습니까?!?