Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
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)
Julien.
https://rjuju.github.io/
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 ...
Julien.
https://rjuju.github.io/
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)
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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)
Julien.
https://rjuju.github.io/
Hors ligne
#13 16/03/2012 16:56:50
- unisol
- Membre
Hors ligne
Pages : 1