web-dev-qa-db-fra.com

Comment configurer postgresql pour la première fois?

Je viens d'installer PostgreSQL et j'ai spécifié le mot de passe x lors de l'installation. Lorsque j'essaie de faire createdb et de spécifier un mot de passe, le message suivant s'affiche:

createdb: impossible de se connecter à la base de données postgres: FATAL: échec de l'authentification du mot de passe pour l'utilisateur

Idem pour createuser.

Comment dois-je commencer? Puis-je m'inscrire moi-même en tant qu'utilisateur dans la base de données?

177
Rohit Banga

Les autres réponses ne me satisfaisaient pas complètement. Voici ce qui a fonctionné pour postgresql-9.1 sur Xubuntu 12.04.1 LTS.

  1. Connectez-vous à la base de données par défaut avec l'utilisateur postgres:

    Sudo -u postgres psql template1

  2. Définissez le mot de passe pour l'utilisateur postgres, puis quittez psql (Ctrl-D):

    ALTER USER postgres avec le mot de passe crypté 'xxxxxxx';

  3. Editez le fichier pg_hba.conf:

    Sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    Et changez "peer" en "md5" sur la ligne concernant postgres:

    local tout postgrespeer md5

  4. Redémarrez la base de données:

    Sudo /etc/init.d/postgresql restart

    (Ici, vous pouvez vérifier que cela a fonctionné avec psql -U postgres.)

  5. Créez un utilisateur ayant le même nom que vous (pour le trouver, vous pouvez taper whoami):

    createuser -U postgres -d -e -E -l -P -r -s <my_name>

    Les options demandent à postgresql de créer un utilisateur pouvant se connecter, créer des bases de données, créer de nouveaux rôles, est un superutilisateur et aura un mot de passe crypté. Les plus importants sont -P -E, de sorte qu'il vous est demandé de saisir le mot de passe qui sera crypté, et -d pour que vous puissiez effectuer un createdb.

    Attention aux mots de passe: il vous demandera d’abord deux fois le nouveau mot de passe (pour le nouvel utilisateur), répété, puis une fois le mot de passe postgres (celui spécifié à l’étape 2).

  6. Là encore, éditez le fichier pg_hba.conf (voir l’étape 3 ci-dessus) et remplacez "peer" par "md5" sur la ligne concernant "tous" les autres utilisateurs:

    local tous touspeer md5

  7. Redémarrez (comme à l'étape 4) et vérifiez que vous pouvez vous connecter sans -U postgres:

    psql template1

    Notez que si vous faites un simple psql, il échouera puisqu'il essaiera de vous connecter à une base de données par défaut ayant le même nom que vous (c.-à-d. whoami). template1 est la base de données admin qui est ici depuis le début.

  8. Maintenant, createdb <dbname> devrait fonctionner.

308
Manur

Sous Linux, PostgresQL est généralement configuré pour permettre à l'utilisateur root de se connecter en tant que superutilisateur postgres postgres à partir du shell (console ou ssh).

$ psql -U postgres

Ensuite, vous créez simplement une nouvelle base de données comme d'habitude:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;

Cela devrait fonctionner sans toucher pg_hba.conf. Si vous voulez être capable de faire cela en utilisant un outil graphique sur le réseau - alors vous devriez jouer avec pg_hba.conf.

51
Oliver Weichhold

Ceci est ma solution:

su root
su postgres
psql
19
Admdebian

Vous pouvez utiliser deux méthodes. Les deux nécessitent la création d'un utilisateur et une base de données.

  1. en utilisant createuser et createdb,

    $ Sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    
  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 lançant 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 PAS de modifier l'utilisateur postgres.

  1. Il est normalement verrouillé par 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 un mot de passe et est délégué au système d'exploitation de l'hôte. Ceci est un bonne chose. Cela signifie normalement que pour vous connecter en tant que postgres, qui est l'équivalent PostgreSQL de SA de SQL Server, vous devez disposer d'un accès en écriture aux fichiers de données sous-jacents. Et, cela signifie que vous pourriez normalement faire des dégâts de toute façon.
  3. En gardant cette option désactivée, vous supprimez le risque d'une attaque par force brute par l'intermédiaire d'un super-utilisateur nommé. Dissimuler et masquer le nom du superutilisateur présente des avantages.
14
Evan Carroll

EDIT: Avertissement: Veuillez lire la réponse publiée par Evan Carroll . Il semble que cette solution n'est ni sûre ni recommandée.

Cela a fonctionné pour moi dans l'installation standard d'Ubuntu 14.04 64 bits .

J'ai suivi les instructions, avec de petites modifications, que j'ai trouvées dans http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html

  1. Installez postgreSQL (si ce n’est déjà dans votre ordinateur):

Sudo apt-get install postgresql

  1. Exécuter psql en utilisant l'utilisateur postgres

Sudo –u postgres psql postgres

  1. Définissez un nouveau mot de passe pour l'utilisateur postgres:

\password postgres

  1. Sortie psql

\q

  1. Editez /etc/postgresql/9.3/main/pg_hba.conf (-) et changez:

#Database administrative login by Unix domain socket local all postgres peer

À:

#Database administrative login by Unix domain socket local all postgres md5

  1. Redémarrez postgreSQL:

Sudo service postgresql restart

  1. Créer une nouvelle base de données

Sudo –u postgres createdb mytestdb

  1. Relancez psql avec l’utilisateur postgres:

psql –U postgres –W

  1. Répertoriez les bases de données existantes (votre nouvelle base de données devrait être là maintenant):

\l

14
Robert

Vous devrez probablement mettre à jour votre fichier pg_hba.conf . Ce fichier contrôle ce que les utilisateurs peuvent connecter à partir de quelles adresses IP. Je pense que l'utilisateur postgres est assez verrouillé par défaut.

2
Neall

Si vous utilisez macOS comme moi, vous n’avez peut-être pas l’utilisateur postgres.

Lorsque j'essayais de lancer Sudo -u postgres psql j'avais l'erreur Sudo: unknown user: postgres

Heureusement, Postgres fournit des exécutables.

createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick

Ensuite, j'ai pu accéder à psql sans problèmes.

psql
psql (10.2)
Type "help" for help.

nick=#

Si vous créez une nouvelle instance postgres à partir de zéro, voici les étapes que j'ai suivies. J'ai utilisé un port autre que celui par défaut pour pouvoir exécuter deux instances.

mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local

Ensuite, j'ai édité /var/postgres/var-10-local/postgresql.conf avec mon port préféré, 5433.

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433
createdb --owner=nick --port=5433

Terminé!

2
Nick Woodhams
Note: textdb is the database which you are going to explore with 'alex' user 

root@kalilinux:~# Sudo su - postgres 
postgres=#  psql   
postgres=#  create database testdb;
postgres=#  create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`
1
Suman Astani

Il vous suffit de parcourir le répertoire de votre installation et d’exécuter le fichier "pg_env.bat". Allez ensuite dans le dossier bin et exécutez pgAdmin.exe. Cela doit fonctionner sans aucun doute!

0
Wellington Ribeiro