Gérer les utilisateurs
Se connecter à PostgreSQL
psql -h localhost -p 5432 -U <username> -W
Il est possible que la commande psql vous sorte une erreur de type : commande inconnue.
Dans ce cas vous allez devoir vous connecter sur l'utilisateur Linux possédant les droits d'utilisation de la commande psql.
su - postgres
Lister les utilisateurs
Dans l'interface de psql :
\du
Créer un utilisateur
Il existe deux commandes différentes pour réaliser cette action.
CREATE USER <username>;
ou
CREATE ROLE <username> WITH LOGIN;
Créer un utilisateur avec l'utilitaire
La création interactive d'un utilisateur est une option pratique disponible uniquement pour l'utilitaire client. Pour créer un utilisateur de manière interactive, exécutez la commande suivante :
sudo -u postgres createuser --interactive
Créer un super utilisateur
Un super utilisateur de base de données contourne toutes les vérifications, ce qui est dangereux du point de vue de la sécurité. Utilisez cette action avec précaution et évitez de travailler avec un compte super utilisateur sauf en cas de nécessité absolue.
Sur PostgreSQL le "super user" est postgres mais dans certain cas il est possible de vouloir créer son propre super user.
Pour créer un super utilisateur :
CREATE USER <username> SUPERUSER;
Si cet utilisateur doit avoir un mot de passe :
CREATE USER <username> WITH SUPERUSER PASSWORD 'passwordstring';
Mot de passe
Dans le cas ou vous avez créé un utilisateur sans mot de passe il possible de lui rajouter le mot de passe via la commande suivante.
ALTER USER <username> WITH PASSWORD '<password>';
Créer un utilisateur avec des droits
CREATE USER <name> WITH <option>;
| Option Syntax | PSQL | Explanation |
|---|---|---|
-s--superuser |
SUPERUSER |
Add the superuser privilege. |
-S--no-superuser |
NOSUPERUSER |
No superuser privilege (default). |
-d--createdb |
CREATEDB |
Allows the user to create databases. |
-D--no-createdb |
NOCREATEDB |
Not allowed to create databases (default). |
-r--createrole |
CREATEROLE |
Allows the user to make new roles. |
-R--no-createrole |
NOCREATEROLE |
Not allowed to create roles (default). |
-i--inherit |
INHERIT |
Automatically inherit the privileges of roles (default). |
-I--no-inherit |
NOINHERIT |
Do not inherit privileges of roles. |
-l--login |
LOGIN |
Allows the user to log into a session with the role name (default). |
-L--no-login |
NOLOGIN |
Not allowed to log into a session with the role name. |
--replication |
REPLICATION |
Allows initiating streaming replication and activating/deactivating backup mode. |
--no-replication |
NOREPLICATION |
Not allowed to initiate streaming replication or backup mode (default). |
-P--pwprompt |
PASSWORD '<password>' |
Initiates password creation prompt or adds provided password to the user. Avoid using this option to create a passwordless user. |
| / | PASSWORD NULL |
Specifically sets the password to null. Every password authentication fails for this user. |
-c <number>--connection-limit=<number> |
CONNECTION LIMIT <number> |
Sets the maximum number of connections for user. Default is without limit. |
Changer les droits d'un utilisateur
Par exemple pour donner les droits de création d'une base de donnée a un utilisateur :
ALTER USER <username> CREATEDB;
Dans le même ordre d'idée on peux donner les droits super utilisateur :
ALTER USER <username> WITH SUPERUSER;
Mais aussi les enlever :
ALTER USER <username> WITH NOSUPERUSER;
Changer le mot de passe d'un utilisateur
ALTER USER user_name WITH PASSWORD 'new_password';
Supprimer un utilisateur
DROP USER [IF EXISTS] <username>;
Si l'utilisateur que vous essayez de supprimer possède des dépendances, la suppression échouera.
Vous allez devoir transférer les dépendances a un autre utilisateur.
1) Par exemple, pour transférer les objets appartenant à myuser à postgres, exécutez :
REASSIGN OWNED BY <old_user> TO <new_user>;
2) Supprimer les connexions de l'objet de la base de données à l'utilisateur avec :
DROP OWNED BY <username>;
3) Maintenant vous pouvez supprimer l'utilisateur
Supprimer un rôle
DROP ROLE [IF EXISTS] <name>;
Donner l'accès à une BDD à un utilisateur
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <username>;
No comments to display
No comments to display