PostgreSQL accorde tous les privilèges sur le schéma à l'utilisateur

Postgresql Accorde Tous Les Privileges Sur Le Schema A L Utilisateur



Les bases de données sont cruciales, et c'est le travail de l'administrateur de contrôler les différents rôles que les utilisateurs peuvent jouer dans une base de données donnée. Dans le cadre de l'autorisation, l'administrateur peut définir des entités utilisateur dans la base de données et accorder ou révoquer divers privilèges aux rôles.

De cette façon, vous contrôlez qui peut accéder à une base de données et quels privilèges ils ont s'ils peuvent accéder à la base de données. Par exemple, vous pouvez révoquer la modification de la base de données ou accorder tous les privilèges sur le schéma à un ou plusieurs utilisateurs dans une table donnée. Ce guide détaille comment utiliser PostgreSQL pour accorder à un utilisateur tous les privilèges sur le schéma à un utilisateur.







Comment accorder des privilèges aux utilisateurs sur PostgreSQL

Lorsque vous créez un nouveau rôle, il obtient certains privilèges par défaut. Cependant, la plupart des privilèges nécessitent que l'administrateur les accorde à différents utilisateurs pour réguler l'accès et le contrôle d'un schéma. Vous pouvez accorder tous les privilèges en même temps ou séparément.



Pour ce tutoriel, créons un nouveau rôle nommé linuxhint1 .



$ sudo -iu postgres
# créer le mot de passe de connexion du rôle linuxhint1 'linuxhint' ;


Notez que nous sommes connectés en tant que postgres, le rôle par défaut créé une fois que vous avez installé PostgreSQL.






Une fois le rôle (utilisateur) créé, nous pouvons lister les rôles disponibles à l'aide de la commande suivante :

# \ du


Les rôles disponibles seront affichés sous forme de tableau.




postgres est le rôle par défaut et dispose déjà de la plupart des privilèges. Cependant, le nouveau rôle, linuxhint1, n'a aucun privilège jusqu'à ce que nous l'accordions.

1. Accorder un privilège spécifique à un utilisateur

Le rôle créé ne peut pas modifier le schéma à moins que vous ne l'autorisiez. Vérifions cela en créant d'abord une table comme rôle par défaut, postgres.

# créer des noms de table ( m_id int toujours généré comme identité, fname vachar ( 100 ) non nul, lname varchar ( 100 ) non nul, age int ) ;



Vous pouvez répertorier les relations disponibles, comme indiqué ci-dessous :


Ensuite, ouvrez un nouveau shell et connectez-vous à PostgreSQL en utilisant l'autre rôle, linuxhint1, que nous avons créé précédemment à l'aide de la commande suivante :

$ psql -DANS linuxhint1 -ré postgres



La -ré spécifie que le rôle est d'utiliser la base de données Postgres.

Essayez de lire le contenu du tableau que nous avons créé en utilisant le SÉLECTIONNER commande.

# SÉLECTIONNER * DE noms ;


Il renvoie un permission refusée erreur empêchant l'utilisateur d'accéder à la table.


Dans un tel cas, nous devons accorder au rôle des privilèges pour sélectionner/afficher les données de la table donnée en utilisant la syntaxe suivante :

# GRANT nom_privilège ON nom_table TO nom_rôle ;


Pour accorder les privilèges, utilisez la session Postgres.


Une fois accordé, essayez de réexécuter la commande précédente.


C'est ça. Vous avez réussi à accorder le privilège de sélection à l'utilisateur spécifique.

2. Accorder tous les privilèges sur le schéma à un utilisateur

Jusqu'à présent, nous avons réussi à accorder un seul privilège sur le schéma à un utilisateur. Eh bien, ce n'est pas assez. L'utilisateur ne peut pas modifier le schéma à moins que vous ne lui accordiez tous les privilèges, tels que l'insertion et la mise à jour.

Il existe différentes manières d'y parvenir. D'abord, allons accorder à l'utilisateur tous les privilèges sur une table donnée en utilisant la syntaxe suivante :

# GRANT ALL ON nom_table TO nom_rôle ;



L'utilisateur peut interagir avec et modifier la table particulière. Cependant, ils ne peuvent pas fonctionner avec d'autres tables du schéma.

À accorder tous les privilèges sur toutes les tables d'un schéma particulier , utilisez la syntaxe suivante :

# GRANT ALL ON ALL TABLES IN SCHEMA nom_schéma TO nom_rôle ;



Enfin, vous pouvez accorder des privilèges spécifiques, tels que l'insertion ou la sélection de toutes les tables du schéma à un rôle donné .

# GRANT nom_privilège ON ALL TABLES IN SCHEMA nom_schéma TO nom_rôle ;



Le rôle peut sélectionner des données dans toutes les tables du schéma spécifié. C'est ainsi que vous définissez les privilèges à accorder sur le schéma aux différents utilisateurs.

Conclusion

PostgreSQL est un SGBD puissant. Il a différentes fonctionnalités, notamment en permettant à l'administrateur d'accorder divers privilèges aux utilisateurs. Accorder tous les privilèges sur le schéma aux utilisateurs signifie permettre à l'utilisateur de modifier et d'interagir avec toutes les tables du schéma spécifié. Nous avons vu comment appliquer cela et d'autres façons d'accorder des privilèges sur le schéma aux rôles à l'aide de l'instruction GRANT dans PostgreSQL.