간단한 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 App 용 PostgreSQL 권한에 대한 나의 답변을 참조하십시오 .
참조 :
답변
이것은 사용자 postgres로 테이블을 만든 다음 일반 사용자로 액세스하려고 할 때 자주 발생합니다. 이 경우 postgres 사용자로 로그인하고 다음 명령을 사용하여 테이블 소유권을 변경하는 것이 가장 좋습니다.
alter table <TABLE> owner to <USER>;