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?
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.
Connectez-vous à la base de données par défaut avec l'utilisateur postgres:
Sudo -u postgres psql template1
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';
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 postgres
peermd5
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
.)
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).
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 tous
peermd5
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.
Maintenant, createdb <dbname>
devrait fonctionner.
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
.
Ceci est ma solution:
su root
su postgres
psql
Vous pouvez utiliser deux méthodes. Les deux nécessitent la création d'un utilisateur et une base de données.
en utilisant createuser et createdb,
$ Sudo -u postgres createuser --superuser $USER
$ createdb mydatabase
$ psql -d mydatabase
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
postgres
Je suggère PAS de modifier l'utilisateur postgres
.
postgres
. Vous êtes censé avoir root pour vous authentifier en tant que postgres
.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.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
Sudo apt-get install postgresql
Sudo –u postgres psql postgres
\password postgres
\q
#Database administrative login by Unix domain socket local all postgres peer
À:
#Database administrative login by Unix domain socket local all postgres md5
Sudo service postgresql restart
Sudo –u postgres createdb mytestdb
psql –U postgres –W
\l
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.
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é!
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`
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!