106 votes

Comment puis-je me connecter et m'authentifier à Postgresql après une nouvelle installation ?

J'ai fait une nouvelle installation de postgres 8.4 sur mint ubuntu. Comment puis-je créer un utilisateur pour postgres et me connecter avec psql ?

Quand je tape psql, il me dit juste

psql: FATAL: Ident authentication failed for user "my-ubuntu-username"

0 votes

Vérifiez ceci article de blog .

170voto

Evan Carroll Points 13420

Il existe deux méthodes que vous pouvez utiliser. Toutes deux nécessitent la création d'un utilisateur y une base de données.

Par défaut, psql se connecte à la base de données avec le même nom que l'utilisateur. Il y a donc une convention pour faire en sorte que le "base de données de l'utilisateur" . Et il n'y a aucune raison de rompre cette convention si votre utilisateur n'a besoin que d'une seule base de données. Nous allons utiliser mydatabase comme nom de la base de données d'exemple.

  1. Utilisation de createuser et createdb nous pouvons être explicites quant au nom de la base de données,

    $ sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase

    Vous devriez probablement l'omettre complètement et laisser toutes les commandes utiliser le nom de l'utilisateur par défaut.

    $ sudo -u postgres createuser -s $USER
    $ createdb
    $ psql
  2. Utilisation des commandes d'administration SQL, et connexion avec un mot de passe via TCP

    $ sudo -u postgres psql postgres

    Et, ensuite, dans le shell psql

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;

    Ensuite, vous pouvez vous connecter,

    $ psql -h localhost -d mydatabase -U myuser -p <port>

    Si vous ne connaissez pas le port, vous pouvez toujours l'obtenir en exécutant la commande suivante, en tant qu'élément de l'option postgres utilisateur,

    SHOW port;

    Ou,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf

Sidenote : le postgres utilisateur

Je propose PAS en modifiant le postgres utilisateur.

  1. C'est normalement verrouillé par le système d'exploitation. Personne n'est censé se connecter au système d'exploitation en tant qu'utilisateur. postgres . Vous êtes censé avoir Root pour vous authentifier en tant que postgres .
  2. Il n'est normalement pas protégé par un mot de passe et il est délégué au système d'exploitation hôte. Il s'agit d'un bonne chose . Cela signifie normalement que pour se connecter en tant que postgres qui est l'équivalent PostgreSQL de la fonction SA vous devez avoir un accès en écriture aux fichiers de données sous-jacents. Et, cela signifie que vous pourriez normalement faire des ravages de toute façon.
  3. En gardant cette option désactivée, vous éliminez le risque d'une attaque par force brute par un super-utilisateur nommé. Cacher et obscurcir le nom du super-utilisateur présente des avantages.

0 votes

Je comprends que les problèmes ne se produisent pas si l'on utilise un super utilisateur de la DB (-s) au lieu d'un non super utilisateur. La prochaine question que je me pose est la suivante : que peut-on faire pour que le système fonctionne même si l'utilisateur de la base de données n'est pas un super utilisateur ?

1 votes

Dans mon cas, après avoir créé l'utilisateur avec : $ sudo -u postgres createuser -s $USER, j'avais besoin de configurer un mot de passe avec : ALTER USER myuser WITH PASSWORD 'mypass' ; ( après m'être connecté à postgres avec : sudo -u postgres psql )

0 votes

Comment dois-je comprendre la commande sudo -u postgres psql postgres ? Je comprends sudo signifie "privilège de racine", -u postgres signifie se connecter en tant qu'utilisateur postgres , psql est la commande pour se connecter à postgresql mais quelle est la dernière postgres en train de faire ?

53voto

user262976 Points 1232

Par défaut, vous devez utiliser l'utilisateur postgres :

sudo -u postgres psql postgres

2 votes

Ou si vous ne pouvez pas utiliser sudo, faites ceci : "su postgres" et ensuite "psql"

33voto

cope360 Points 2289

L'erreur que vous obtenez est due au fait que your-ubuntu-username n'est pas un utilisateur Postgres valide.

Vous devez dire à psql quel nom d'utilisateur de la base de données utiliser

psql -U postgres

Vous pouvez également avoir besoin de spécifier la base de données à laquelle se connecter

psql -U postgres -d <dbname>

1 votes

J'ai essayé "psql -U postgres", j'ai obtenu la même erreur. Je n'ai pas encore créé de base de données, je viens de faire une nouvelle installation.

0 votes

psql -U myuser -d mydb fonctionne parfaitement, tandis que psql -U myuser essaie d'utiliser l'authentification par les pairs, merci !

5voto

André Verwijs Points 1

Vous pouvez également vous connecter à la base de données en tant qu'utilisateur "normal" (pas postgres) :

postgres=# \connect opensim Opensim_Tester localhost;

Password for user Opensim_Tester:    

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432"

3voto

toka Points 21

Si votre client de base de données se connecte avec TCP/IP et que vous avez configuré ident auth dans votre pg_hba.conf, vérifiez que vous avez installé et exécuté un identd. Ceci est obligatoire même si vous n'avez que des clients locaux se connectant à "localhost".

Sachez également que de nos jours, l'identifiant peut devoir être IPv6 activé pour que Postgresql accueille les clients qui se connectent à localhost.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X