web-dev-qa-db-fra.com

L'utilisateur de Postgres n'existe pas?

Je viens d'installer Postgres et je l'ai bricolé et différentes configurations pendant 1 à 2 heures.

Je suis bloqué sur étant incapable de changer en postgres-user

$ su - postgres donne l'erreur suivante: su: unknown login: postgres

$ Sudo -u postgres psql donne l'erreur suivante: Sudo: unknown user: postgres

Ces tentatives sont faites en tant qu'utilisateur normal. Les essayer en tant que root a exactement les mêmes résultats. J'ai installé postgres via Homebrew sur OS X et j'ai lu les instructions plusieurs fois.

78
krystah

psql: me connecte avec mon nom d'utilisateur par défaut

psql -U postgres: Me connecte en tant qu'utilisateur postgres

Sudo ne semble pas être nécessaire pour moi.

J'utilise Postgres.app pour ma base de données OS X Postgres. Cela évitait de vérifier que l'installation fonctionnait correctement et que le serveur de base de données était correctement lancé. Vérifiez-le ici: http://postgresapp.com

Edit: Merci à @Erwin Brandstetter pour la correction de mon utilisation des arguments.

79
danielM

Par psql --help, lorsque vous n'avez pas défini d'options pour le nom de la base de données (sans -d option) ce serait votre nom d'utilisateur, si vous ne le faisiez pas -U, le nom d'utilisateur de la base de données serait également votre nom d'utilisateur, etc.

Mais par la commande initdb (pour créer la première base de données), votre nom d'utilisateur ne correspond à aucun nom de base de données. Il a une base de données nommée postgres. La première base de données est toujours créée par la commande initdb lorsque la zone de stockage de données est initialisée. Cette base de données s'appelle postgres.

Donc, si vous n'avez pas d'autre base de données nommée votre nom d'utilisateur, vous devez faire psql -d postgres pour que la commande psql fonctionne. Et il semble que cela donne -d option par défaut, psql postgres fonctionne aussi.

Si vous avez créé une autre base de données portant le même nom que votre nom d'utilisateur (cela devrait être fait avec createdb), vous ne pouvez commander que psql. Et il semble que le premier nom d'utilisateur de base de données définisse le nom d'utilisateur de votre machine par brassage.

psql -d <first database name> -U <first database user name>

ou,

psql -d postgres -U <your machine username>
psql -d postgres

fonctionnerait par défaut.

18
kangkyu

OS X a tendance à préfixer les noms de compte système avec "_"; vous n'indiquez pas quelle version d'OS X vous utilisez, mais au moins dans les versions 10.8 et 10.9, l'utilisateur _postgres existe dans une installation par défaut. Notez que vous ne pourrez pas su accéder à ce compte (sauf en tant que root) car il ne possède pas de mot de passe. Sudo -u _postgres, en revanche, devrait bien fonctionner.

17
Gordon Davisson
psql -U postgres

A bien fonctionné pour moi en cas de nom de la base de données: postgres & nom d'utilisateur: postgres. Donc, vous n'avez pas besoin d'écrire Sudo.

Et dans le cas d'autres db, vous pouvez essayer

psql -U yourdb postgres

Comme il est donné dans l'aide de Postgres:

psql [OPTION]... [DBNAME [USERNAME]]
3
cloudberry

la discussion et la réponse ici m'ont été massivement utiles:

psql: FATAL: la base de données "<utilisateur>" n'existe pas

3
daroo

Je reçois exactement les mêmes erreurs que kryshah avec su - postgres et Sudo -u postgres psql. La réponse de DanielM donne aussi des erreurs.

Sortie quand mauvais réglages

Répondez cependant au commentaire de przbabu.

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

Je pense que la partie de ce problème peut être dans les paramètres de propriétaire dans OSX

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

mais faire Sudo chown -R postgres:staff /Users/postgres donne chown: invalid user: ‘postgres:staff’.

En bref, ce n'est pas la solution du problème. Utilisez les outils fournis par l’installation de postgres pour créer un utilisateur et une base de données.

Pour obtenir les bons réglages et sorties

Après l’installation de postgres, des commandes spécifiques permettent d’ajouter un nouvel utilisateur au système de base de données. Après initdb, lancez ce qui suit comme décrit here

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

Pour éviter la demande de mot de passe tout le temps, vous avez trois choix comme décrit ici .

La solution est simple:
se connecter en tant que root
et après:

su - postgres

psql
1
el fuser