문제점이 있으며 지금까지 단서를 찾지 못했습니다. 내가 할 수있는 최선의 방법을 설명하려고 노력할 것이지만, 더 자세한 내용을 자유롭게 묻자!사용자가 기본 테이블 스페이스에 테이블을 생성하지 못하도록합니다.
상황
내가 Windows에서 포스트 그레스 9.2.4 함께 일하고 있어요, 나는 각 사용자에 대한 할당량 관리의 어떤 종류를 구현해야합니다.
필자가 읽은만큼 기본 제공되는 기능은 없으며 대부분의 답변은 파일 시스템의 할당량 관리 기능을 사용한다는 점을 지적합니다.
하나의 데이터베이스가 있으며 각 사용자는 자신의 스키마를 갖습니다.
내가 취한 접근법은 각 사용자마다 테이블 스페이스가 다른 테이블 스페이스를 사용함으로써 각기 다른 위치에있는 각 사용자의 데이터 파일을 분리하는 것입니다 (사용자가 자신의 테이블 스페이스 소유자이기 때문에 폴더 단위 기준).
이 내가 직면하고있어 문제를 알려준 ...
문제
테이블을 생성 할 때, 사용자가 저장하는 pg_default에게 테이블을 선택 할 수 있다는 발생 자료.
나중에 사용자가 소유 한 테이블 스페이스로 변경 한 다음 pg_default 테이블 스페이스로 다시 전환하려고하면 권한 거부 오류가 발생합니다.
-- Creates the table in the default tablespace
CREATE TABLE test_schema.test_table ()
TABLESPACE pg_default;
-- Changes the tablespace to the one owned by the user
ALTER TABLE test_schema.test_table
SET TABLESPACE user_tablespace;
-- Tries to set back the pg_default tablespace (throws permission denied to pg_default tablespace)
ALTER TABLE test_schema.test_table
SET TABLESPACE pg_default;
이 모든 명령은 관리자 권한이없는 사용자 로그인을 사용하여 수행되었다 : 여기 순서를 명확히하기 위해
은 몇 가지 예제 코드입니다. pg_default 테이블 스페이스는 postgres 로그인 (관리 계정)이 소유합니다.내 생각 엔 pg_default 테이블 스페이스를 사용하도록 설정된 데이터베이스 테이블 스페이스와 관련이 있다고 생각합니다.
자신의 소유 테이블 만 생성 객체에 사용자를 제약 조건 할 수
질문?
'pg_default'로 돌아가는 문제는 버그입니다. 수정 사항이 방금 제안되었습니다 - http://www.postgresql.org/message-id/[email protected] –
@CraigRinger가 그것을 지적 해 주셔서 고마워요, 우연의 일치! 필자가 이해 하듯이 사용자는 소유권에 관계없이 _database_ tablespace를 사용할 수있는 권한을 항상 가지게됩니다. – Chopin