Vous n'êtes pas identifié(e).

#1 16/03/2012 12:57:35

unisol
Membre

creation user limité a sa base

Bonjour,

j'ai des difficultés à créer un utilisateur, qui ne peut pas lister les autres bases
et qui aurait des droits communs sur sa base :

postgres=# create user jean;
CREATE ROLE
postgres=# alter role jean with createdb;
ALTER ROLE
postgres=# ALTER USER jean WITH ENCRYPTED PASSWORD 'azerty';
ALTER ROLE
postgres=# create database jean ;
CREATE DATABASE
postgres=# psql -d template0 -c "alter user jean with password 'azerty'"

dans PGadmin j'ai bien une base une base qui porte le nom jean, mais impossible d'importer quoi que ce soit dessus
si je créeé une base dbjean et que j'essaie de l'attribuer à jean, j'ai une erreur:
"doit être membre du role jean"

bref, un peu perdu

merci pour votre aide

Hors ligne

#2 16/03/2012 13:12:17

Marc Cousin
Membre

Re : creation user limité a sa base

postgres=# create user jean;
CREATE ROLE

Ça crée l'utilisateur

postgres=# alter role jean with createdb;
ALTER ROLE

Ça donne le droit à cet utilisateur de créer des bases (je ne pense pas que ça soit ce que vous voulez)

postgres=# ALTER USER jean WITH ENCRYPTED PASSWORD 'azerty';
ALTER ROLE

Ca lui donne un mot de passe. Encrypted est la valeur par défaut…

postgres=# create database jean ;
CREATE DATABASE

Ça crée bien une base

postgres=# psql -d template0 -c "alter user jean with password 'azerty'"

Par contre, là, vous êtes dans psql et vous essayez d'exécuter psql comme si c'était un ordre SQL. Ça ne marchera évidemment pas.

Pour ce qui est de l'erreur pgadmin, aucune idée. On va attendre gleu ou quelqu'un d'autre qui l'utilise smile


Marc.

Hors ligne

#3 16/03/2012 13:12:20

rjuju
Administrateur

Re : creation user limité a sa base

Avec quel user avez vous créé la base de donnée jean ?

Dans votre cas, pour faire un alter database dbjean owner to jean ou un create database dbjean with owner  = jean il faut être superutilisateur (ou l'utilisateur jean qui a les droits de création) je pense.

Edit: Je viens de tester le création de l'utilisateur, d'une base de donnée dbjean et changer le propriétaire pour l'utilisateur jean, insérer des données sous pgAdmin et ça fonctionne bien (en étant connecté en super utilisateur bien entendu).

Dernière modification par rjuju (16/03/2012 13:16:07)

Hors ligne

#4 16/03/2012 13:23:36

unisol
Membre

Re : creation user limité a sa base

j'ai une base appartenant à jean !

postgres=# CREATE DATABASE dbjean  WITH OWNER = jean ENCODING = 'UTF8'  TABLESPACE = pg_default  LC_COLLATE = 'fr_FR.UTF-8'  LC_CTYPE = 'fr_FR.UTF-8'   CONNECTION LIMIT = -1;

mais :

postgres=# GRANT SELECT, INSERT, UPDATE, DELETE, CONNECT  ON DATABASE dbjean TO jean;
ERREUR:  droit SELECT invalide pour la base de données

toujours, merci pour votre aide.

Hors ligne

#5 16/03/2012 13:33:40

unisol
Membre

Re : creation user limité a sa base

j'ai compris mon erreur, on ne peut pas faire grant select sur une base, mais que sur des tables.
je cherche...

Hors ligne

#6 16/03/2012 13:36:34

rjuju
Administrateur

Re : creation user limité a sa base

Les droits select, insert ... se font sur les tables et non sur les database.
Selon votre version de postgres, vous pouvez créer des droits par défaut pour les futurs objets, ou faire un grant insert, select ... on all tables in schema ...

Hors ligne

#7 16/03/2012 14:10:47

unisol
Membre

Re : creation user limité a sa base

justement, quel est la synthaxe exact, ce qui me troublen c'est comment postgres determine la base sur la quelle ont agit.
on a un nom de nom_schéma, ce suffit -il ?

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA nom_schéma

Hors ligne

#8 16/03/2012 14:14:13

rjuju
Administrateur

Re : creation user limité a sa base

Une connexion est toujours limitée à une seule base de l'instance, c'est donc sur celle la que toutes les requêtes agissent.
Il faut donc être connecté sur la bonne base de donnée avant de faire votre GRANT ...

Dernière modification par rjuju (16/03/2012 14:15:04)

Hors ligne

#9 16/03/2012 14:39:53

unisol
Membre

Re : creation user limité a sa base

je me loggue avec :
su - postgres;
$psql
#postgres

à quelle moment on determine la base ?

Hors ligne

#10 16/03/2012 14:43:17

rjuju
Administrateur

Re : creation user limité a sa base

Par défaut, psql se connecte sur la base de donnée postgres. Il faut utiliser psql -d nom_base pour spécifier la base, ou faire \c nom_base pour changer de base.

Hors ligne

#11 16/03/2012 16:37:53

unisol
Membre

Re : creation user limité a sa base

merci, j'avance
j'ai fais  :

-bash-4.1$ psql -d dbjean
dbjean=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public
'pas de message
dbjean=#GRANT SELECT, DELETE, UPDATE, INSERT, CONNECT ON ALL TABLES IN SCHEMA public
'pas de message non plus

à présent j'arrive à me connecter.
merci à vous.

depuis la ligne de commande et sous un systeme linux, comment
restaurer un backup vers une base fraichement créee ?

Hors ligne

#12 16/03/2012 16:48:55

rjuju
Administrateur

Re : creation user limité a sa base

Cela dépend de votre dump initial. S'il est en format "plain", il faut utiliser psql et lui passer le script en paramètre (ex: psql -d dbjean -f /chemin/vers/fichier.backup)

S'il s'agit d'un format custom, il faut utiliser pg_restore (ex: pg_restore -d dbjean /chemin/vers/fichier.backup)

Hors ligne

#13 16/03/2012 16:56:50

unisol
Membre

Re : creation user limité a sa base

il est au format tar.
merci, je test !

Hors ligne

Pied de page des forums