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
다음myapp
rails 앱이 DB에 연결하는 데 사용할 새로운 사용자 를 만들면 다소 의미 가 있습니다. 역할myapp
의 기존meltemi
구성원과 기존 구성원을 모두 만듭니다myapp_group
. 그러나 다음 마이그레이션을 실행하면 어떻게됩니까?myapp
다시 문제를 다시 만들어서 소유하지 않습니까?!?