2016-08-22 5 views
1

Ceci est mon fichier init.sql:Pourquoi ne puis-je toujours pas accéder à une fonction DB dans 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 '' 
); 

Alors si je:

psql -f init.sql 

Et ..

psql -d my_data -U u 

my_data=> select * from users; 

ERROR: permission denied for relation users 

Pourquoi cette autorisation serait refusée si je viens de voir accorder un traitement?

Plus d'info

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

Répondre

3

Vous ne avez donné la permission sur le schéma, qui est séparé des tables. Si vous souhaitez donner des autorisations sur les tables vous pouvez également utiliser

GRANT ALL ON ALL TABLES IN SCHEMA public TO u; 

Notez que si vous avez des séquences ou d'autres objets dont ils ont besoin également des autorisations distinctes.

Cela doit être défini après les tables ont été créées car les autorisations sont définies pour les objets existants.

Si vous souhaitez définir des autorisations par défaut pour les nouveaux objets que vous pouvez utiliser

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

Hmm .. mis à jour mon post par rapport à votre réponse à ajouter toutes les subventions, mais toujours la même erreur. – Trip

+0

Que vous dit '\ z users'? Aussi à quel point créez-vous la table car elle n'est pas montrée sur le script. –

+0

Mis à jour avec la réponse '/ z users' et mes données de création de table dans OP – Trip