Est-ce que tous les utilisateurs ont besoin d'accéder à la base de données postgres dans pg_hba.conf?

dba.stackexchange https://dba.stackexchange.com/questions/19088

  •  22-10-2019
  •  | 
  •  

Question

Je testais juste le processus de création d'utilisateur dans pgAdmin. J'ai une base de données db1 pour laquelle je veux créer un utilisateur pour pouvoir s'y connecter. Je veux que ce soit la seule base de données, l'utilisateur peut se connecter.

Après avoir créé l'utilisateur, j'ai ouvert mon fichier pg_hba.conf et ajouté quelques lignes:

host    db1 dbuser  127.0.0.1/32    md5
host    db1 dbuser  ::1/128         md5

L'utilisateur postgres a accès à toutes les bases de données:

host    all postgres    127.0.0.1/32    md5
host    all postgres    ::1/128         md5

Lorsque je me connecte au serveur via pgAdmin, je reçois une erreur indiquant que dbuser n'a pas accès à la base de données postgres.

Est-ce normal? Devrait DBUSER même besoin d'accéder à la base de données Postgres, quand je veux qu'il ne db1 d'accès? Dès que j'ajoute postgres à la liste des bases de données pour dbuser, je peux me connecter.

Était-ce utile?

La solution

Ce que vous voyez est pgAdmin connexion à la configuration Maintenance DB - qui est postgres par défaut. Sélectionnez un serveur dans le volet Explorateur d'objets et choisissez « Propriétés » dans le menu contextuel (clic droit). Le menu déroulant ne propose que les choix typiques, mais vous pouvez il suffit de taper un nom de base de données .

Si l'accès d'un utilisateur est limité à un base de données dans pg_hba.conf (qui l'endroit le plus efficace pour le faire), vous pouvez le faire fonctionner avec pgAdmin en configurant < em> celui de la base de données db entretien. Rien de mal ne sortira.

L'autre option est d'accorder l'accès à l'entretien DB (postgres ou autre) en pg_hba.conf plus.

Vous pouvez également ouvrir toutes les portes en pg_hba.conf et réglementer l'accès avec des autorisations de base de données, comme @a_horse expliqué dans sa réponse. Cela est plus facile à gérer, mais de restreindre l'accès à pg_hba.conf est plus sûr et plus rapide - plus robuste contre les attaques DoS et charges lourdes. Il ne sera pas une grande différence dans la plupart des cas, cependant.

de pgAdmin 1.22 (version finale de pgAdmin III):

Le maintien domaine DB est utilisé pour spécifier la base de données initiale qui pgAdmin se connecte, et qui devrait avoir pgAgent schéma et les objets adminpack installé (à la fois en option). PostgreSQL 8.1 et au-dessus, l'entretien DB est normalement appelé « postgres », et de la template1 'versions antérieures est souvent utilisé, mais il est préférable de créer une base de données Postgres 'à cet effet afin d'éviter encombrent la base de données de modèle.

Autres conseils

Vous n'avez pas besoin de le faire à travers le pg_hba.conf.

Il suffit de révoquer le privilège de connexion sur la base de données de cet utilisateur.

Cependant par le public par défaut est accordé le privilège de connexion. Donc, vous devez d'abord Révoquer que:

revoke connect on db1 from public;
grant connect on db1 to dbuser;

Vous devez exécuter l'instruction revoke ... from public pour toutes les bases de données pour assurer que seuls les utilisateurs spécifiques peuvent se connecter.

Une fois que vous avez fait cela, vous pouvez laisser pg_hba.conf « ouvert » pour tous les utilisateurs et toutes les bases de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top