Je suis un novice postgres.
J'ai installé le postgres.app pour mac. Je jouais avec les commandes psql et j'ai accidentellement abandonné la base de données postgres. Je ne sais pas ce qu'il y avait dedans.
Je travaille actuellement sur un tutoriel: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/
Et je suis coincé sudo -u postgres psql postgres
MESSAGE D'ERREUR: psql: FATAL: role "postgres" does not exist
$ quel psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
C'est ce qui s'imprime psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+------------+----------+---------+-------+---------------------------
user | user | UTF8 | en_US | en_US |
template0 | user | UTF8 | en_US | en_US | =c/user +
| | | | | user =CTc/user
template1 | user | UTF8 | en_US | en_US | =c/user +
| | | | | user =CTc/user
(3 rows)
Quelles sont donc les étapes à suivre? Supprimer tout ce qui concerne psql et réinstaller tout?
Merci pour l'aide les gars!
macos
postgresql
terminal
user805981
la source
la source
brew services start postresql
est exécuté.Réponses:
REMARQUE: Si vous avez installé postgres en utilisant homebrew, consultez le commentaire de @ user3402754 ci-dessous.
Notez que le message d'erreur NE parle PAS d'une base de données manquante, il parle d'un rôle manquant. Plus tard dans le processus de connexion, il pourrait également tomber sur la base de données manquante.
Mais la première étape consiste à vérifier le rôle manquant: quelle est la sortie
psql
de la commande\du
? Sur mon système Ubuntu, la ligne appropriée ressemble à ceci:S'il n'y a pas au moins un rôle avec
superuser
, alors vous avez un problème :-)S'il y en a un, vous pouvez l'utiliser pour vous connecter. Et en regardant la sortie de votre
\l
commande: Les autorisations pouruser
les bases de donnéestemplate0
ettemplate1
sont les mêmes que sur mon système Ubuntu pour le superutilisateurpostgres
. Je pense donc que votre configuration est simple à utiliser enuser
tant que superutilisateur. Vous pouvez donc essayer cette commande pour vous connecter:Si
user
c'est vraiment le superutilisateur DB, vous pouvez créer un autre superutilisateur DB et une base de données privée et vide pour lui:Mais comme votre configuration postgres.app ne semble pas le faire, vous ne devriez pas non plus. Adaptez simplement le tutoriel.
la source
CREATE USER postgres WITH SUPERUSER PASSWORD 'password';
utilisant postgres v10.homebrew
vous devez exécuter/usr/local/opt/postgres/bin/createuser -s postgres
votre terminal/usr/local/opt/postgresql/bin/createuser -s postgres
/usr/local/opt/postgresql@11/bin/createuser -s postgres
La clé est "J'ai installé le postgres.app pour mac." Cette application configure l'installation locale de PostgreSQL avec un superutilisateur de base de données dont le nom de rôle est le même que votre nom de connexion (abrégé).
Certains scripts (par exemple, une sauvegarde de base de données créée avec
pgdump
un système Linux) et des didacticiels supposent que le superutilisateur a le nom de rôle traditionnel depostgres
.Vous pouvez rendre votre installation locale un peu plus traditionnelle et éviter ces problèmes en procédant une seule fois:
ce qui fera disparaître ces FATAL: le rôle "postgres" n'existe pas .
la source
/usr/local/Cellar/postgresql/9.2.4/bin/createuser -s postgres
(pour la version 9.2.4, évidemment)./Applications/Postgres.app/Contents/Versions/9.3/bin/createuser -s postgres
couru correctement pour moi.brew link postgresql
après l'installation, il n'est pas nécessaire d'ajouter le chemin complet àcreateuser
, un simplecreateuser -s postgres
fonctionnera très biencreateuser -s postgres
travaillé pour moi. J'ai installé postgres avec HomebrewPour Mac:
brew install postgres
initdb /usr/local/var/postgres
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
ou/usr/local/opt/postgres/bin/createuser -s postgres
qui n'utilisera que la dernière version.pg_ctl -D /usr/local/var/postgres start
Pour démarrer le serveur au démarrage
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Maintenant, il est configuré, connectez-vous en utilisant
psql -U postgres -h localhost
ou utilisez PgAdmin pour l'interface graphique.Par défaut, l'utilisateur
postgres
n'aura pas de mot de passe de connexion.Consultez ce site pour plus d'articles comme celui-ci: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7
la source
brew services start postgresql
pour démarrer postgresou faites un post-gresl de superutilisateur juste avec
la source
Cela se produit lorsque vous exécutez
initdb
avec un utilisateur dont l'ID n'est paspostgres
, sans spécifier lepostgres
nom d'utilisateur avec--username=postgres
ou-U postgres
.Le cluster de base de données est ensuite créé avec le compte d'utilisateur du système que vous avez utilisé pour exécuter initdb et il reçoit les autorisations de superutilisateur.
Pour le corriger, créez simplement un nouvel utilisateur nommé
postgres
avec l'option en--superuser
utilisant l'createuser
utilitaire fourni avec Postgres. L'utilitaire se trouve dans lebin
répertoire Postgres . par exempleSi vous avez un nom d'hôte ou un port personnalisé, assurez-vous de définir les options appropriées .
N'oubliez pas de supprimer l'autre compte d'utilisateur créé pour vous par initdb.
la source
Pour moi, ce code a fonctionné:
il est venu d'ici: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4
la source
J'avais besoin de désamorcer
$PGUSER
:la source
Tout d' abord vous avez besoin de créer un utilisateur:
Après avoir créé une base de données:
Changement
$USER
le nom d'utilisateur de votre système.Vous pouvez voir la solution complète ici .
la source
L'exécuter sur la ligne de commande devrait le corriger
/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>
la source
La suppression de la
postgres
base de données n'a pas vraiment d'importance. Cette base de données est initialement vide et son objectif est simplementpostgres
utilisateur ait une sorte de "maison" à laquelle se connecter, s'il en a besoin.Vous pouvez toujours le recréer avec la commande SQL
CREATE DATABASE postgres;
Notez que le didacticiel mentionné dans la question n'est pas écrit avec
postgres.app
à l'esprit. Contrairement à PostgreSQL pour Unix en général,postgres.app
essaie de ressembler à une application normale par opposition à un service qui serait exécuté par unpostgres
utilisateur dédié disposant de privilèges différents de votre utilisateur normal.postgres.app
est géré et géré par votre propre compte.Donc, au lieu de cette commande:,
sudo -u postgres psql -U postgres
il serait plus dans l'esprit de postgres.app de simplement émettre:,psql
qui se connecte automatiquement à une base de données correspondant au nom de vos utilisateurs, et avec un compte db du même nom qui se trouve être superutilisateur, donc il peut tout faire en termes d'autorisations.la source
ERROR: cannot drop the currently open database
lorsque j'essaie de supprimer l'utilisateur db? N'est-ce pas une bonne pratique d'utiliser ce postgres.app?Postgres.app
est à des fins de test et de développement; il s'agit d'un package PostgreSQL de Heroku qui est conçu pour permettre aux utilisateurs Mac qui développent avec Ruby on Rails de tester plus facilement avec PostgreSQL au lieu du SQLite par défaut. Les utilisations de Rails avaient tendance à tester avec SQLite et à se déployer sur PostgreSQL, ce qui a causé toutes sortes de problèmes, donc Heroku a essayé de faciliter les tests sur PostgreSQL aussi.Postgres.app
est bien pour les tests, mais je n'envisagerais pas de l'utiliser pour la production ou de vraies données, ce n'est tout simplement pas à cela.Pour ce que ça vaut, j'ai Ubuntu et de nombreux packages installés et cela est entré en conflit avec lui.
Pour moi, la bonne réponse était:
la source
C'est le seul qui l'a corrigé pour moi:
la source
sudo
pour obtenir des privilèges de superutilisateur temporaires.Sur le système Ubuntu, j'ai purgé PostgreSQL et l'ai réinstallé. Toutes les bases de données sont restaurées. Cela a résolu le problème pour moi.
Conseil - Prenez la sauvegarde des bases de données pour être du côté le plus sûr.
la source
Je ne pense pas que sudo soit nécessaire ici car psql -l renvoie une liste de bases de données. Cela m'indique que initdb a été exécuté sous l'utilisateur actuel de l'utilisateur, pas sous l'utilisateur postgres.
Vous pouvez simplement:
Et continuez le tutoriel.
Je suggérerais les points généraux d'AH de la création de l'utilisateur postgres et de la base de données car de nombreuses applications peuvent s'attendre à ce que cela existe.
Une brève explication:
PostgreSQL ne fonctionnera pas avec un accès administratif au système d'exploitation. Au lieu de cela, il s'exécute avec un utilisateur ordinaire et afin de prendre en charge l'authentification par les pairs (demandant au système d'exploitation qui essaie de se connecter), il crée un utilisateur et une base de données avec l'utilisateur qui exécute le processus d'initialisation. Dans ce cas, c'était votre utilisateur normal.
la source
Je suis resté coincé sur ce problème après l'avoir exécuté
brew services stop postgresql
la veille.Le lendemain:
brew services start postgresql
ne fonctionnerait pas. En effet, comme indiqué lors de l'installation à l'aide de homebrew. postgresql utilise un launchd ... qui se charge lorsque votre ordinateur est allumé.résolution:
brew services start postgresql
redémarrez votre ordinateur.
la source
La
\du
commande retourne:Et cette
postgres=# \password postgres
erreur de retour de commande :Mais ça
postgres=# \password postgres@implicit_files
marche bien.Aussi après
sudo -u postgres createuser -s postgres
la première variante fonctionne également.la source