Soy un novato postgres.
Instalé el postgres.app para mac. Estaba jugando con los comandos psql y accidentalmente solté la base de datos de postgres. No sé lo que había dentro.
Actualmente estoy trabajando en un tutorial: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/
Y estoy atrapado en sudo -u postgres psql postgres
MENSAJE DE ERROR: psql: FATAL: role "postgres" does not exist
$ que psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
Esto es lo que se imprime de 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)
¿Cuáles son los pasos que debo seguir? ¿Eliminar todo lo relacionado con psql y reinstalar todo?
¡Gracias por la ayuda chicos!
macos
postgresql
terminal
usuario805981
fuente
fuente
brew services start postresql
se ejecute.Respuestas:
NOTA: Si instaló postgres usando homebrew, vea el comentario de @ user3402754 a continuación.
Tenga en cuenta que el mensaje de error NO habla de una base de datos faltante, sino de un rol faltante. Más adelante en el proceso de inicio de sesión, también podría tropezar con la base de datos que falta.
Pero el primer paso es verificar el rol que falta: ¿Cuál es el resultado dentro
psql
del comando\du
? En mi sistema Ubuntu, la línea relevante se ve así:Si no hay al menos un rol con
superuser
, entonces tiene un problema :-)Si hay uno, puede usarlo para iniciar sesión. Y mirando el resultado de su
\l
comando: los permisos parauser
las bases de datostemplate0
ytemplate1
son los mismos que en mi sistema Ubuntu para el superusuariopostgres
. Así que creo que su configuración de usos simplesuser
como superusuario. Entonces puede probar este comando para iniciar sesión:Si
user
realmente es el superusuario de DB, puede crear otro superusuario de DB y una base de datos privada y vacía para él:Pero como su configuración de postgres.app no parece hacer esto, tampoco debería hacerlo. Simple adaptar el tutorial.
fuente
CREATE USER postgres WITH SUPERUSER PASSWORD 'password';
estoy usando postgres v10.homebrew
entonces, debe ejecutarlo/usr/local/opt/postgres/bin/createuser -s postgres
en su terminal/usr/local/opt/postgresql/bin/createuser -s postgres
/usr/local/opt/postgresql@11/bin/createuser -s postgres
La clave es "instalé el postgres.app para mac". Esta aplicación configura la instalación local de PostgreSQL con un superusuario de base de datos cuyo nombre de rol es el mismo que su nombre de usuario (corto).
Algunas secuencias de comandos (por ejemplo, una copia de seguridad de la base de datos creada con
pgdump
un sistema Linux) y los tutoriales supondrán que el superusuario tiene el nombre de rol tradicionalpostgres
.Puede hacer que su instalación local se vea un poco más tradicional y evitar estos problemas haciendo una vez:
lo que hará que esos FATAL: el rol "postgres" no exista desaparezca.
fuente
/usr/local/Cellar/postgresql/9.2.4/bin/createuser -s postgres
(para la versión 9.2.4, obviamente)./Applications/Postgres.app/Contents/Versions/9.3/bin/createuser -s postgres
funcionó correctamente para míbrew link postgresql
después de la instalación, no hay necesidad de agregar todo el caminocreateuser
, un simplecreateuser -s postgres
funcionará muy biencreateuser -s postgres
trabajó para mi. Instalé postgres con HomebrewPara Mac:
brew install postgres
initdb /usr/local/var/postgres
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
o/usr/local/opt/postgres/bin/createuser -s postgres
que solo usará la última versión.pg_ctl -D /usr/local/var/postgres start
Para iniciar el servidor al inicio
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Ahora está configurado, inicie sesión usando
psql -U postgres -h localhost
o use PgAdmin para GUI.Por defecto, el usuario
postgres
no tendrá ninguna contraseña de inicio de sesión.Consulte este sitio para obtener más artículos como este: https://medium.com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7
fuente
brew services start postgresql
para iniciar postgreso hacer un superusuario postgresl solo con
fuente
Esto sucede cuando se ejecuta
initdb
con un usuario cuyo ID no espostgres
, sin especificar elpostgres
nombre de usuario con--username=postgres
o-U postgres
.El clúster de la base de datos se crea con la cuenta de usuario del sistema que utilizó para ejecutar initdb, y se le otorgan permisos de superusuario.
Para solucionarlo, simplemente cree un nuevo usuario nombrado
postgres
con la opción--superuser
usando lacreateuser
utilidad que viene con Postgres. La utilidad se puede encontrar en elbin
directorio de Postgres . p.ejSi tiene un nombre de host o puerto personalizado, asegúrese de configurar las opciones apropiadas .
No olvide eliminar la otra cuenta de usuario que initdb creó para usted.
fuente
Para mí, este código funcionó:
vino de aquí: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4
fuente
Necesitaba desarmar
$PGUSER
:fuente
Primero necesitas crear un usuario:
Después de crear una base de datos:
Cambie
$USER
a su nombre de usuario del sistema.Puedes ver la solución completa aquí .
fuente
Ejecutar esto en la línea de comando debería solucionarlo
/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>
fuente
Dejar caer la
postgres
base de datos realmente no importa. Esta base de datos está inicialmente vacía y su propósito es simplemente que elpostgres
usuario tenga una especie de "hogar" para conectarse, en caso de necesitarla.Aún así, puede recrearlo con el comando SQL
CREATE DATABASE postgres;
Tenga en cuenta que el tutorial mencionado en la pregunta no está escrito teniendo
postgres.app
en cuenta. Contrariamente a PostgreSQL para Unix en general,postgres.app
intenta parecer una aplicación normal en lugar de un servicio que sería ejecutado por unpostgres
usuario dedicado que tiene privilegios diferentes a los de su usuario normal.postgres.app
es administrado y administrado por su propia cuenta.Entonces, en lugar de este comando:,
sudo -u postgres psql -U postgres
sería más en el espíritu de postgres.app simplemente emitir:,psql
que se conecta automáticamente a una base de datos que coincide con el nombre de sus usuarios, y con una cuenta db del mismo nombre que resulta ser superusuario, por lo que Puede hacer cualquier cosa con respecto a los permisos.fuente
ERROR: cannot drop the currently open database
cuando intento eliminar el usuario db? Entonces, ¿no es una buena práctica usar este postgres.app?Postgres.app
es para fines de prueba y desarrollo; es un paquete PostgreSQL de Heroku diseñado para facilitar a los usuarios de Mac que desarrollan con Ruby on Rails probar con PostgreSQL en lugar del SQLite predeterminado. Los usos de Rails tienden a probar con SQLite y a implementarse en PostgreSQL, lo que causó todo tipo de problemas, por lo que Heroku también intentó facilitar la prueba en PostgreSQL.Postgres.app
está bien para las pruebas, pero no consideraría usarlo para producción o datos reales, eso no es para lo que sirve.Por lo que vale, tengo ubuntu y muchos paquetes instalados y entró en conflicto con él.
Para mí la respuesta correcta fue:
fuente
Este es el único que me lo arregló:
fuente
sudo
para obtener privilegios temporales de superusuario.En el sistema Ubuntu, purgué el PostgreSQL y lo reinstalé. Se restauran todas las bases de datos. Esto resolvió mi problema.
Consejo: tome la copia de seguridad de las bases de datos para estar más seguro.
fuente
No creo que se necesite sudo aquí porque psql -l devuelve una lista de bases de datos. Esto me dice que initdb se ejecutó con el usuario actual del usuario, no con el usuario de postgres.
Tu puedes sólo:
Y continúa el tutorial.
Sugeriría los puntos generales de AH de crear el usuario de postgres y db porque muchas aplicaciones pueden esperar que esto exista.
Una breve explicación:
PostgreSQL no se ejecutará con acceso administrativo al sistema operativo. En su lugar, se ejecuta con un usuario común y, para admitir la autenticación entre pares (preguntando al sistema operativo quién está intentando conectarse), crea un usuario y una base de datos con el usuario que ejecuta el proceso de inicialización. En este caso era tu usuario normal.
fuente
Me quedé atrapado en este problema después de haberlo ejecutado
brew services stop postgresql
el día anterior.Al día siguiente:
brew services start postgresql
no funcionaría. Esto se debe a que, como se muestra cuando instala con homebrew. postgresql usa un launchd ... que se carga cuando su computadora está encendida.resolución:
brew services start postgresql
reinicie su computadora.
fuente
El
\du
comando return:Y ese comando
postgres=# \password postgres
devuelve error:Pero eso
postgres=# \password postgres@implicit_files
funciona bien.También después de
sudo -u postgres createuser -s postgres
la primera variante también funciona.fuente