Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
j'ai compris mon erreur, on ne peut pas faire grant select sur une base, mais que sur des tables.
je cherche...
Hors ligne
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
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
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
je me loggue avec :
su - postgres;
$psql
#postgres
à quelle moment on determine la base ?
Hors ligne
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
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
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
Hors ligne
Pages : 1