[postgresql] 관계에 대한 권한이 거부되었습니다.

간단한 SQL 명령을 실행하려고했습니다.

select * from site_adzone;

이 오류가 발생했습니다

ERROR:  permission denied for relation site_adzone

여기서 무엇이 문제가 될 수 있습니까?

다른 테이블을 선택하려고 시도했지만 동일한 문제가 발생했습니다. 나는 또한 이것을 시도했다.

GRANT ALL PRIVILEGES ON DATABASE jerry to tom;

하지만 콘솔 에서이 응답을 얻었습니다.

WARNING:  no privileges were granted for "jerry"

무엇이 잘못 될 수 있는지 아십니까?



답변

데이터베이스에 GRANT가 필요한 것은 아닙니다. 테이블에 직접 부여하십시오.

데이터베이스에 대한 권한 부여는 주로 연결 권한을 부여하거나 취소하는 데 사용됩니다. 이를 통해 충분한 다른 권한이있는 경우 데이터베이스에서 작업을 수행 할 수있는 사람을 지정할 수 있습니다.

당신은 대신에 원합니다 :

 GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;

이 문제를 해결합니다.


답변

Ron E에 게시하면 다른 사람에게 유용 할 수 있으므로 모든 테이블에 대한 권한 부여 권한이 있습니다.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;


답변

먼저 올바른 데이터베이스에 연결 한 후 다음을 실행하십시오.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;


답변

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;


답변

첫 번째로 중요한 단계는 DB에 연결하는 것입니다.

psql -d yourDBName

2 단계, 권한 부여

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;


답변

스키마의 모든 기존 테이블에 권한을 부여하려면 다음을 사용하십시오.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role>

향후 테이블에 적용될 기본 권한을 지정하려면 다음을 사용하십시오.

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema>
  GRANT <privileges> ON TABLES TO <role>;

예 :

ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin;

당신이 사용하는 경우 SERIAL또는 BIGSERIAL열이 그때는 아마에 대한 동일한 작업을 수행하는 것이 좋습니다 SEQUENCES다른, 또는은 INSERT(실패 포스트 그레스 (10 개)의이IDENTITY 그 문제에서 고통을하지 않으며, 이상 권장 SERIAL, 즉 유형)

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;

자세한 내용과 재사용 가능한 스크립트에 대해서는 Web AppPostgreSQL 권한에 대한 나의 답변을 참조하십시오 .

참조 :

부여

기본 원칙 변경


답변

이것은 사용자 postgres로 테이블을 만든 다음 일반 사용자로 액세스하려고 할 때 자주 발생합니다. 이 경우 postgres 사용자로 로그인하고 다음 명령을 사용하여 테이블 소유권을 변경하는 것이 가장 좋습니다.

alter table <TABLE> owner to <USER>;