2016-08-22 1 views
1

이 내 init.sql 파일 : 다음PSQL의 DB 기능에 여전히 액세스 할 수없는 이유는 무엇입니까?

DROP DATABASE IF EXISTS my_data; 
CREATE DATABASE my_data; 

DROP USER IF EXISTS u; 
CREATE USER u WITH PASSWORD 'secret'; 

GRANT ALL ON ALL TABLES IN SCHEMA public TO u; 
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO u; 
GRANT ALL ON ALL FUNCTIONS IN SCHEMA public TO u; 

\c my_data; 

CREATE TABLE users (
    ID SERIAL PRIMARY KEY NOT NULL, 
    email VARCHAR NOT NULL DEFAULT '', 
    password VARCHAR NOT NULL DEFAULT '', 
    active SMALLINT NOT NULL DEFAULT '1', 
    created TIMESTAMP NOT NULL, 
    modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    salt VARCHAR NOT NULL DEFAULT '' 
); 

경우 I :

psql -f init.sql 

그리고 ..

psql -d my_data -U u 

my_data=> select * from users; 

ERROR: permission denied for relation users 

난 그냥 부여하면 왜 권한이 거부 될 것인가?

더 많은 정보

my_data=> \z users 
         Access privileges 
Schema | Name | Type | Access privileges | Column access privileges 
--------+-------+-------+-------------------+-------------------------- 
public | users | table |     | 
(1 row) 

답변

3

에만 테이블에서 분리 된 스키마에 권한을 주었다. 당신이 테이블에 대한 사용 권한을 부여하려면 또한 당신은 당신이 순서 또는 다른 개체가있는 경우 그들은 또한 별도의 권한이 필요

GRANT ALL ON ALL TABLES IN SCHEMA public TO u; 

주를 사용할 수 있습니다.

이후에 으로 설정해야합니다. 기존 개체에 대한 사용 권한이 설정되어 있으므로 테이블이 만들어졌습니다.

새로운 개체에 대한 기본 권한을 설정할 경우

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO u; 
+0

은 흠 .. 답변과 관련하여 내 게시물을 업데이트 모든 보조금,하지만 여전히 같은 오류를 추가 할 수 있습니다. – Trip

+0

'\ z users'는 당신에게 무엇을 말합니까? 또한 스크립트에 표시되지 않으므로 어느 시점에 테이블을 만들었습니까? –

+0

'/ z users' 응답으로 업데이트되고 OP – Trip

관련 문제