2010-01-31 17 views

Respuesta

59

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

Entiendo que los problemas no ocurren si utilizo un súper usuario DB (-s) en lugar de un usuario no súper. La siguiente pregunta para mí sería: ¿qué se puede hacer para que esto funcione incluso si el usuario de la base de datos no es un súper usuario? – Hartmut

29

por defecto que tendría que utilizar el usuario postgres:

sudo -u postgres psql postgres 
+0

gracias. Estoy dentro, pero no estoy conectado como el usuario de ubuntu (nombre), ¿verdad? – user61734

+0

@ user61734 Gracias funcionó para mí. – sayth

10

El error de su están recibiendo es porque tu-ubuntu-nombre de usuario no es un usuario válido Postgres.

tiene que decirle a psql lo nombre de usuario de base de datos a utilizar

psql -U postgres 

También puede ser necesario para especificar la base de datos para conectarse a

psql -U postgres -d <dbname> 
+0

Probé "psql -U postgres", obtuve el mismo error. No he creado ninguna base de datos, solo hice una nueva instalación. – user61734

+0

'psql -U myuser -d mydb' funciona perfectamente, mientras que' psql -U myuser' intenta usar la autenticación de pares, ¡gracias! – inf3rno

3

Si su cliente de base de datos se conecta con TCP/IP y se tiene ident auth configurada en tu pg_hba.conf. Comprueba que tienes un identd instalado y en ejecución. Esto es obligatorio incluso si solo tiene clientes locales que se conectan a "localhost".

También tenga en cuenta que hoy en día el identd puede tener que ser IPv6 enabled para Postgresql para dar la bienvenida a los clientes que se conectan a localhost.

1

también se puede conectar a la base de datos como usuario "normal" (no postgres):

postgres=# \connect opensim Opensim_Tester localhost; 

Password for user Opensim_Tester:  

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432" 
Cuestiones relacionadas