web-dev-qa-db-fra.com

Comment me connecter et m'authentifier auprès de Postgresql après une nouvelle installation?

A fait une nouvelle installation de Postgres 8.4 sur Ubuntu à la menthe. Comment créer un utilisateur pour postgres et me connecter en utilisant psql?

Quand je tape psql, ça me dit juste

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

Il existe deux méthodes que vous pouvez utiliser. Les deux nécessitent la création d'un utilisateur et 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 que la "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 utiliserons mydatabase comme exemple de nom de base de données.

  1. En utilisant createuser et createdb, nous pouvons être explicites sur le nom de la base de données,

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

    Vous devriez probablement omettre cela complètement et laisser à la place toutes les commandes par défaut au nom de l'utilisateur.

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

    $ Sudo -u postgres psql postgres
    

    Et puis, 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 ce qui suit, en tant qu'utilisateur postgres,

    SHOW port;
    

    Ou,

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

Sidenote: l'utilisateur postgres

Je suggère [~ # ~] de ne pas [~ # ~] modifier l'utilisateur postgres.

  1. Il est normalement verrouillé depuis le système d'exploitation. Personne n'est censé "se connecter" au système d'exploitation en tant que postgres. Vous êtes censé avoir root pour vous authentifier en tant que postgres.
  2. Il n'est normalement pas protégé par mot de passe et délègue au système d'exploitation hôte. C'est un bonne chose. Cela signifie normalement que pour vous connecter en tant que postgres qui est l'équivalent PostgreSQL du SA de SQL Server, 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 supprimez le risque d'une attaque par force brute via un super-utilisateur nommé. Cacher et masquer le nom du superutilisateur présente des avantages.
96
Evan Carroll

par défaut, vous devrez utiliser l'utilisateur postgres:

Sudo -u postgres psql postgres
34
user262976

L'erreur que vous obtenez est due au fait que votre-nom-d'utilisateur-ubuntu n'est pas un utilisateur Postgres valide.

Vous devez indiquer à psql le nom d'utilisateur de la base de données à utiliser

psql -U postgres

Vous devrez peut-être également spécifier la base de données à laquelle vous connecter

psql -U postgres -d <dbname>
14
cope360

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"
5
Dutch Glory

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

Sachez également que de nos jours, l'identd doit être IPv6 activé pour Postgresql pour accueillir les clients qui se connectent à localhost.

3
toka