2012-03-07 23 views
9

Actualmente inicio sesión en PostgreSQL usando psql -U postgres. ¿Cómo cambio el nombre del usuario postgres al root?¿Cómo cambio el nombre del superusuario predeterminado de postgres a "raíz"?

Si ya he iniciado sesión como postgres, intentándolo ALTER USER postgres RENAME TO root dirá ERROR: session user cannot be renamed.

¿Es posible cambiar el nombre del usuario sin iniciar sesión como usuario postgres? No creo tener otro superusuario, ya que es una instalación nueva de PostgreSQL.

Por cierto, estoy ejecutando Gentoo en Amazon EC2.

+1

Imagino: inicie sesión como postgres, cree un segundo superusuario, inicie sesión como nuevo superusuario y ejecute su ALTER –

+2

¿Por qué haría esto? No puede ejecutar el administrador de correo como "raíz", ya que solo se iniciará cuando se ejecute como un usuario sin privilegios. –

+0

¿El usuario 'postgres' en Linux tiene que coincidir con el rol' postgres' en la base de datos? Me conecto como 'root', así que solo quiero escribir' psql -d something' para iniciar sesión como opuesto a 'psl -U postgres -d something'. – hobbes3

Respuesta

13

Debería poder crear un nuevo superusuario postgres llamado raíz iniciando sesión como usuario de postgres y (en el shell) escribiendo;

createuser --superuser root 
psql> create database root owner root 

Después de eso, después de haberse logeado como root, debe ser capaz de hacer lo que quiera con el usuario postgres.

+0

¿Dice que escriba eso dentro de 'psql'? No pareció hacer nada. – hobbes3

+0

@ hobbes3 No, desde el shell normal, no en psql. –

+0

@ hobbes3 No tiene una caja de gentoo a mano, solo un ubuntu, las rutas pueden no estar configuradas si tiene un problema. –

2

Puede intentar

update pg_authid set rolname ='root' where rolname = 'postgres'; 

pero tenga en cuenta, que comiendo los catálogos del sistema a mano es siempre un poco peligroso.

+0

Eso parece funcionar. ¿Cuál es la diferencia entre un rol y un usuario? ¿He iniciado sesión como usuario o función 'postgres' cuando hice' psql -U postgres'? – hobbes3

+1

@ hobbes3: AFAIK "usuario" y "grupo" son los términos históricos que luego se colapsaron en "rol". Entonces estos términos son intercambiables en gran medida. Entonces, usted inició sesión con el rol/usuario "postgres". –

+1

@ hobbes3: en PostgreSQL moderno, los "usuarios" son [roles con un inicio de sesión] (http://www.postgresql.org/docs/current/interactive/sql-createuser.html), "grupos" no tienen. Internamente solo hay roles. –

4

¿Qué hay de:

ALTER ROLE postgres RENAME TO root; 

usando un rol de superusuario diferente?

+0

"ERROR: el usuario de la sesión no puede renombrarse". Tenga en cuenta que OP se registró como 'postgres'. – Jawa

Cuestiones relacionadas