linux - password - ¿Cómo configurar postgresql por primera vez?
postgresql linux command line (8)
Acabo de instalar postgresql y he especificado la contraseña x durante la instalación. Cuando intento hacer createdb
y especificar cualquier contraseña, recibo el mensaje:
createdb: no se pudo conectar a la base de datos postgres: FATAL: error de autenticación de contraseña para el usuario
Lo mismo para createuser
.
¿Cómo debería comenzar? ¿Puedo agregarme como usuario a la base de datos?
En Linux, PostgresQL generalmente está configurado para permitir que el usuario root inicie sesión como postgres superusuario postgres
desde el shell (consola o ssh).
$ psql -U postgres
Entonces solo crearías 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 GUI a través de la red, entonces debería meterse con pg_hba.conf
.
Esta es mi solución:
su root
su postgres
psql
Esto funcionó para mí en la instalación estándar de Ubuntu 14.04 64 bits .
Seguí las instrucciones, con pequeñas modificaciones, que encontré en http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html
- Instale postgreSQL (si no está ya en su máquina):
sudo apt-get install postgresql
- Ejecute psql usando el usuario postgres
sudo –u postgres psql postgres
- Establezca una nueva contraseña para el usuario de postgres:
/password postgres
- Salga de psql
/q
- Edite /etc/postgresql/9.3/main/pg_hba.conf y cambie:
#Database administrative login by Unix domain socket local all postgres peer
A:
#Database administrative login by Unix domain socket local all postgres md5
- Reinicie postgreSQL:
sudo service postgresql restart
- Crea una nueva base de datos
sudo –u postgres createdb mytestdb
- Ejecute psql con el usuario postgres nuevamente:
psql –U postgres –W
- Enumere las bases de datos existentes (su nueva base de datos debería estar allí ahora):
/l
Hay dos métodos que puede usar. Ambos requieren crear un usuario y una base de datos.
Usando createuser y createdb ,
$ sudo -u postgres createuser -s $USER $ createdb mydatabase $ psql -d mydatabase
Usar los comandos de administración SQL y conectarse con una contraseña a través de TCP
$ sudo -u postgres psql postgres
Y, luego, en el shell psql
CREATE ROLE myuser LOGIN PASSWORD ''mypass''; CREATE DATABASE mydatabase WITH OWNER = myuser;
Entonces puedes iniciar sesión,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Si no conoce el puerto, siempre puede obtenerlo ejecutando lo siguiente, como usuario de
postgres
,SHOW port;
O,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Sidenote: el usuario postgres
Sugiero NO modificar al usuario de postgres
.
- Normalmente está bloqueado desde el sistema operativo. Se supone que nadie debe "iniciar sesión" en el sistema operativo como
postgres
. Se supone que tienes root para poder autenticarte comopostgres
. - Normalmente no está protegido con contraseña y se delega en el sistema operativo host. Esto es algo bueno Esto normalmente significa que para iniciar sesión como
postgres
que es el equivalente de PostgreSQL de laSA
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. - 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.
Las otras respuestas no fueron completamente satisfactorias para mí. Esto es lo que funcionó para postgresql-9.1 en Xubuntu 12.04.1 LTS.
Conéctese a la base de datos predeterminada con el usuario postgres:
sudo -u postgres psql template1
Establezca la contraseña para el usuario postgres, luego salga de psql (Ctrl-D):
ALTER USER postgres con la contraseña encriptada ''xxxxxxx'';
Edite el archivo
pg_hba.conf
:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
Y cambie "peer" a "md5" en la línea referente a postgres:
local all post
peermd5Reinicie la base de datos:
sudo /etc/init.d/postgresql restart
(Aquí puede verificar que funcionó con
psql -U postgres
).Cree un usuario que tenga el mismo nombre que usted (para encontrarlo, puede escribir
whoami
):createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Las opciones le dicen a postgresql que cree un usuario que pueda iniciar sesión, crear bases de datos, crear nuevas funciones, sea un superusuario y tenga una contraseña encriptada. Los realmente importantes son -P -E, de modo que se le pide que escriba la contraseña que se codificará, y -d para que pueda
createdb
.Tenga cuidado con las contraseñas : primero le pedirá dos veces la nueva contraseña (para el nuevo usuario), repetida, y luego la contraseña de postgres (la que se especificó en el paso 2).
De nuevo, edite el archivo
pg_hba.conf
(consulte el paso 3 anterior) y cambie "peer" a "md5" en la línea correspondiente a "todos" los demás usuarios:local todos los
paresmd5Reinicie (como en el paso 4) y compruebe que puede iniciar sesión sin -U postgres:
psql template1
Tenga en cuenta que si hace un mero
psql
, fallará, ya que intentará conectarlo a una base de datos predeterminada que tenga el mismo nombre que usted (es decir,whoami
). template1 es la base de datos de administrador que está aquí desde el principio.Ahora
createdb <dbname>
debería funcionar.
Probablemente necesites actualizar tu 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.
Si está ejecutando macOS como yo, es posible que no tenga el usuario de postgres.
Al intentar ejecutar sudo -u postgres psql
, estaba obteniendo el error sudo: unknown user: postgres
Afortunadamente hay ejecutables que proporciona postgres.
createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick
Luego pude acceder a psql
sin problemas.
psql
psql (10.2)
Type "help" for help.
nick=#
Si está creando una nueva instancia de postgres desde cero, estos son los pasos que tomé. 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 /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!
Solo busque en el directorio de su instalación y ejecute este archivo "pg_env.bat", luego vaya a la carpeta bin y ejecute pgAdmin.exe. Esto debe funcionar sin duda!