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 postresqlse 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
psqldel 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
\lcomando: los permisos parauserlas bases de datostemplate0ytemplate1son los mismos que en mi sistema Ubuntu para el superusuariopostgres. Así que creo que su configuración de usos simplesusercomo superusuario. Entonces puede probar este comando para iniciar sesión:Si
userrealmente 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.homebrewentonces, debe ejecutarlo/usr/local/opt/postgres/bin/createuser -s postgresen su terminal/usr/local/opt/postgresql/bin/createuser -s postgres/usr/local/opt/postgresql@11/bin/createuser -s postgresLa 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
pgdumpun 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 postgresfuncionó correctamente para míbrew link postgresqldespués de la instalación, no hay necesidad de agregar todo el caminocreateuser, un simplecreateuser -s postgresfuncionará muy biencreateuser -s postgrestrabajó para mi. Instalé postgres con HomebrewPara Mac:
brew install postgresinitdb /usr/local/var/postgres/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgreso/usr/local/opt/postgres/bin/createuser -s postgresque solo usará la última versión.pg_ctl -D /usr/local/var/postgres startPara iniciar el servidor al inicio
mkdir -p ~/Library/LaunchAgentsln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgentslaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistAhora está configurado, inicie sesión usando
psql -U postgres -h localhosto use PgAdmin para GUI.Por defecto, el usuario
postgresno 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 postgresqlpara iniciar postgreso hacer un superusuario postgresl solo con
fuente
Esto sucede cuando se ejecuta
initdbcon un usuario cuyo ID no espostgres, sin especificar elpostgresnombre de usuario con--username=postgreso-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
postgrescon la opción--superuserusando lacreateuserutilidad que viene con Postgres. La utilidad se puede encontrar en elbindirectorio 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
$USERa 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
postgresbase de datos realmente no importa. Esta base de datos está inicialmente vacía y su propósito es simplemente que elpostgresusuario 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.appen cuenta. Contrariamente a PostgreSQL para Unix en general,postgres.appintenta parecer una aplicación normal en lugar de un servicio que sería ejecutado por unpostgresusuario dedicado que tiene privilegios diferentes a los de su usuario normal.postgres.appes administrado y administrado por su propia cuenta.Entonces, en lugar de este comando:,
sudo -u postgres psql -U postgressería más en el espíritu de postgres.app simplemente emitir:,psqlque 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 databasecuando intento eliminar el usuario db? Entonces, ¿no es una buena práctica usar este postgres.app?Postgres.appes 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.appestá 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
sudopara 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 postgresqlel día anterior.Al día siguiente:
brew services start postgresqlno 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 postgresqlreinicie su computadora.
fuente
El
\ducomando return:Y ese comando
postgres=# \password postgresdevuelve error:Pero eso
postgres=# \password postgres@implicit_filesfunciona bien.También después de
sudo -u postgres createuser -s postgresla primera variante también funciona.fuente