2009-09-24 52 views
154

Acabo de instalar postgresql y he especificado la contraseña x durante la instalación. cuando intento hacer createdb y especificar cualquier contraseña consigo el mensaje:¿Cómo configurar postgresql por primera vez?

createdb: no se pudo conectar a la base de datos postgres: FATAL: autenticación de contraseña falló para el usuario

Lo mismo para createuser.

¿Cómo debería comenzar? ¿Puedo agregarme como usuario a la base de datos?

+0

Posible duplicado de [¿Cómo inicio sesión y me autentico en Postgresql después de una nueva instalación?] (Http://stackoverflow.com/questions/2172569/how-do-i-login-and-authenticate-to-postgresql- after-a-fresh-install) –

+1

Esto es muy parecido a la pregunta que se hizo un año después. Pero, creo que este tiene una respuesta primaria * peligrosa *. Debes ** no ** estar configurando el usuario 'postgres'. Es el 'SU' de PostgreSQL, y lo abre para los ataques de inicio de sesión en su contra. [Crear otro superusuario] (http://stackoverflow.com/questions/2172569/how-do-i-login-and-authenticate-to-postgresql-after-a-fresh-install), y reservar el ' postgres' para administradores de UNIX con root. –

Respuesta

278

Las otras respuestas no eran completamente satisfactorio para mí. Esto es lo que funcionó para postgresql-9.1 en Xubuntu 12.04.1 LTS.

  1. Conectar a la base de datos por defecto con el usuario postgres:

    sudo -u postgres psql template1

  2. establecer la contraseña para el usuario postgres, a continuación, salir de psql (Ctrl-D) :

    ALTER USER postgres con la contraseña encriptada 'xxxxxxx';

  3. Editar el archivo pg_hba.conf:

    sudo vim /etc/postgresql/9.1/main/pg_hba.Conf

    y el cambio "pares" a "md5" en la línea en relación con postgres:

    locales             todos           postgres           par md5

  4. Reiniciar la base de datos:

    sudo /etc/init.d/postgresql reiniciar

  5. Crear (Aquí se puede comprobar que funcionaba con psql -U postgres). un usuario que tiene el mismo nombre que usted (para encontrarlo, puede escribir whoami):

    CreateUser postgres -U -d -e -E -l -P -r -s <my_name>

    Las opciones le dicen PostgreSQL para crear un usuario que puede acceder al, crear bases de datos, crear nuevas funciones, es una superusuario, y tendrá una contraseña encriptada. Los realmente importantes son -P -E, para que se le pida que escriba la contraseña que se cifrará, y -d para que pueda hacer un createdb.

    Cuidado con las contraseñas: será la primera que pedir dos veces la nueva contraseña (para el nuevo usuario), que se repite, y luego una vez la contraseña postgres (la especificada en el paso 2).

  6. De nuevo, editar el archivo pg_hba.conf (ver paso 3 anterior), y el cambio "pares" a "md5" en la línea relativa a "todos" los otros usuarios:

    locales             todo           todo           pares MD5

  7. Restart (como en el paso 4), y comprobar que se puede acceder sin -U postgres:

    psql template1

    Tenga en cuenta que si lo hace un mero psql , fallará ya que intentará conectarte con una base de datos predeterminada que tenga el mismo nombre que tú (es decir, whoami). template1 es la base de datos de administrador que está aquí desde el principio.

  8. Ahora createdb <dbname> debería funcionar.

+0

Este procedimiento funcionó muy bien en Ubuntu 13.10 también. Solo recuerda sudo en el paso 5 al crear un usuario. –

+2

Funcionó muy bien en Ubuntu 14.04 LTS y – ilhnctn

+2

como una nota, la línea en 'pg_hba.conf' debe ser la primera línea, de lo contrario podría ser ignorada debido a otras reglas (pgsql 9.3.5 en F21). Me tomó un tiempo darme cuenta de esto, que las líneas sin comentarios y cambios ya comentados para el usuario de postgresql no funcionarán simplemente. – dashesy

2

Probablemente necesite actualizar su archivo pg_hba.conf. Este archivo controla lo que los usuarios pueden iniciar sesión desde qué direcciones IP. Creo que el usuario de postgres está bastante bloqueado por defecto.

+2

Para RHEL6.4 y postgres 8.4, el archivo se encuentra en '/ var/lib/pgsql/data/pg_hba.conf'. Cambia 'ident' a' trust' para 'host' (y' local' si estás usando ssh). – DavidG

50

En Linux PostgresQL generalmente se configura para permitir que el usuario root inicie sesión como superusuario de postgres postgres desde el shell (consola o ssh).

$ psql -U postgres 

Entonces usted acaba de crear una nueva base de datos como de costumbre:

CREATE ROLE myuser LOGIN password 'secret'; 
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser; 

Esto debería funcionar sin tocar pg_hba.conf. Si desea poder hacer esto usando alguna herramienta de GUI en la red, entonces debería meterse con pg_hba.conf.

+0

estoy trabajando en Windows ejecuté initdb para mi directorio y tengo los archivos de configuración presentes. ahora createdb funciona pero cuando realizo la prueba psql aparece el mensaje ADVERTENCIA: la página de códigos de consola (437) difiere de la página de códigos de Windows (1252) Los caracteres de 8 bits pueden no funcionar correctamente. Consulte la referencia psql página "Notas para usuarios de Windows" para obtener más información. y ninguno de los comandos funciona. –

+2

'psql: FATAL: la autenticación de pares falló para el usuario" postgres "' incluso con sudo. –

17

Esta es mi solución:

su root 
su postgres 
psql 
+3

Esto funcionará en muchos casos porque muchos sitios tendrán pg_hba.conf para autenticar al usuario de postgres db contra la cuenta del sistema postgres (método de pares). Sin embargo, el inicio de sesión exitoso dependerá en última instancia de los contenidos de pg_hba.conf para cualquier sitio en particular. –

+1

funcionó para mí.Reemplacé la primera línea con 'sudo bash'. – eje211

0

Simplemente navegar hasta el directorio de su instalación y ejecutar este archivo "pg_env.bat", así que después de ir a la carpeta bin y ejecutar pgAdmin.exe. Esto debe funcionar sin duda!

11

Esto funcionó para mí en la instalación estándar Ubuntu 14.04 64 bits.

He seguido las instrucciones, con pequeñas modificaciones, que encontré en http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html

  1. Instalar PostgreSQL (si no está ya en su máquina):

sudo apt-get install postgresql

  1. Ejecute psql usando el usuario postgres

sudo –u postgres psql postgres

  1. establecer una nueva contraseña para el usuario postgres:

\password postgres

  1. salida psql

\q

  1. Editar /etc/postgresql/9.3/main/pg_hba.conf y cambio:

#Database administrative login by Unix domain socket local all postgres peer

Para:

#Database administrative login by Unix domain socket local all postgres md5

  1. Restart postgreSQL:

sudo service postgresql restart

  1. Crear una nueva base de datos

sudo –u postgres createdb mytestdb

    psql
  1. Ejecutar con el usuario postgres nuevo:

psql –U postgres –W

  1. Listar las bases de datos existentes (su nueva base de datos debería estar allí ahora):

\l

+1

Bajé la votación porque creo que activar al usuario 'postgres' es una mala idea. http://stackoverflow.com/a/41604969/124486 –

6

Hay dos métodos que puede utilizar. Ambos requieren crear un usuario y una base de datos.

  1. Usando createuser y createdb,

    $ sudo -u postgres createuser -s $USER 
    $ createdb mydatabase 
    $ psql -d mydatabase 
    
  2. Uso de la administración de comandos SQL, y la conexión con una contraseña a través de TCP

    $ sudo -u postgres psql postgres 
    

    Y, a continuación, en el psql shell

    CREATE ROLE myuser LOGIN PASSWORD 'mypass'; 
    CREATE DATABASE mydatabase WITH OWNER = myuser; 
    

    A continuación, puede iniciar sesión,

    $ psql -h localhost -d mydatabase -U myuser -p <port> 
    

    Si usted no sabe el puerto, siempre se puede obtener mediante la ejecución de los siguientes, ya que el usuario postgres,

    SHOW port; 
    

    O,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf 
    

Nota al margen: el usuario postgres

Sugiero NO modificando el usuario postgres.

  1. Normalmente está bloqueado desde el sistema operativo.Se supone que nadie debe "iniciar sesión" en el sistema operativo como postgres. Se supone que debes tener la raíz para llegar a autenticarse como postgres.
  2. Normalmente no está protegido con contraseña y se delega en el sistema operativo host. Esta es una buena cosa . Esto normalmente significa que para iniciar sesión como postgres, que es el equivalente de PostgreSQL del SA de SQL Server, debe tener acceso de escritura a los archivos de datos subyacentes. Y, eso significa que normalmente podrías causar estragos de todos modos.
  3. Al mantener esto desactivado, elimina el riesgo de un ataque de fuerza bruta a través de un superusuario nombrado. Ocultar y ocultar el nombre del superusuario tiene sus ventajas.
+0

Con el primer método, el usuario termina sin privilegios. Terminé usando esto en lugar del primer comando: 'sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $ (whoami)' –

0

Si está ejecutando macOS como yo, es posible que no tenga el usuario de postgres.

Al intentar ejecutar sudo -u postgres psql que estaba recibiendo el error sudo: unknown user: postgres

suerte hay ejecutables que proporciona postgres.

createuser -D /var/postgres/var-10-local --superuser --username=nick 
createdb --owner=nick 

entonces yo era capaz de acceder psql sin problemas.

psql 
psql (10.2) 
Type "help" for help. 

nick=# 

Si va a crear una nueva instancia postgres desde cero, aquí están los pasos que di. Usé un puerto no predeterminado para poder ejecutar dos instancias.

mkdir /var/postgres/var-10-local 
pg_ctl init -D /var/postgres/var-10-local 

Luego he editado /var/postgres/var-10-local/postgresql.conf con mi puerto preferido, 5433.

/Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-local -p 5433 

createuser -D /var/postgres/var-10-local --superuser --username=nick --port=5433 
createdb --owner=nick --port=5433 

hecho!

Cuestiones relacionadas