2016-08-22 86 views
1

这是我init.sql文件:为什么我仍然不能访问PSQL中的任何数据库函数?

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 '' 
); 

然后,如果我:

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用户'告诉你什么?同样,你在什么时候创建表格,因为它没有显示在脚本上。 –

+0

用'/ z用户'响应更新,并在OP – Trip

相关问题