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.
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.
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.
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.
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]]
la discussion et la réponse ici m'ont été massivement utiles:
psql: FATAL: la base de données "<utilisateur>" n'existe pas
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.
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.
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