Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: tabla pg_user Ayuda......

31 views
Skip to first unread message

Daniel Medina

unread,
Feb 9, 2007, 4:21:10 PM2/9/07
to

> Por algun motivo desconocido en la tabla pg_user esta dos veces
> registrado en usuario "postgres", por esto no me deja realizar backups
> con el comando pg_dump, como hago para eliminar uno de los dos registros
> teniendo en cuenta que los datos son identicos y que es el usuario admin
> del sistema
>
> y porque paso esto
>
> Saludos
>
>

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Daniel Medina

unread,
Feb 9, 2007, 4:20:19 PM2/9/07
to
Por algun motivo desconocido en la tabla pg_user esta dos veces
registrado en usuario "postgres", por esto no me deja realizar backups
con el comando pg_dump, como hago para eliminar uno de los dos registros
teniendo en cuenta que los datos son identicos y que es el usuario admin
del sistema

y porque paso esto

Saludos


Gracias.....

El jue, 15-02-2007 a las 12:22 -0500, jeferson alvarez escribió:
> Hola amigos esta es la idea de lo que quiero hacer
>
> select identity(int4,1, 1), CODIGO from articulo
>
> quiero sacar algo como eso hacer un listado de codigos x ej y que me
> aparesca la lista numerada
>
> gracias
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
--
Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

GABRIEL COLINA

unread,
Feb 9, 2007, 6:10:20 PM2/9/07
to
Te comento lo que haria, nunca me paso con esa tabla, pero si con otras.
 
Creo una tabla con identica estructura.
 
pg_user_2
 
insert into pg_user_2 select usename,usesysid,usecreatetable,usesuper,usecatupd,
passwd,,valuntil,useconfig from pg_user
group by  usename,usesysid,usecreatetable,usesuper,usecatupd,
passwd,,valuntil,useconfig
 
deleted from pg_user
insert into pg_user select * from pg_user_2.
 
Quiza sea una locura pero es lo que se me ocurre.
 
 


Daniel Medina <dme...@computec.com.co> escribió:

> Por algun motivo desconocido en la tabla pg_user esta dos veces
> registrado en usuario "postgres", por esto no me deja realizar backups
> con el comando pg_dump, como hago para eliminar uno de los dos registros
> teniendo en cuenta que los datos son identicos y que es el usuario admin
> del sistema
>
> y porque paso esto
>
> Saludos
>
>



---------------------------(fin del mensaje)---------------------------
TIP 2: puedes desuscribirte de todas las listas simultáneamente
(envíe "unregister TuDirecciónDeCorreo" a majo...@postgresql.org)

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

Eduardo J. Ortega

unread,
Feb 10, 2007, 12:28:11 AM2/10/07
to
Yo sugeriría hacer lo siguiente:
1) detener postgres
2) copiar el directorio de datos de postgres a un nuevo directorio preservando
permisos
3) iniciar el postgres sobre el directorio copia recién creado.
4) Realizar el delete de una de las filas en la tabla de usuarios y probaro
que todo funcione bien. si es así, problema solucionado. Si no, todavía se
tiene la versión original del directorio de datos de postgres.

En cuanto a por qué pasó, lo siento, ni idea.

On Friday 09 February 2007 16:20, Daniel Medina wrote:
> Por algun motivo desconocido en la tabla pg_user esta dos veces
> registrado en usuario "postgres", por esto no me deja realizar backups
> con el comando pg_dump, como hago para eliminar uno de los dos registros
> teniendo en cuenta que los datos son identicos y que es el usuario admin
> del sistema
>
> y porque paso esto
>
> Saludos
>
>
> Gracias.....
>
> El jue, 15-02-2007 a las 12:22 -0500, jeferson alvarez escribió:
> > Hola amigos esta es la idea de lo que quiero hacer
> >
> > select identity(int4,1, 1), CODIGO from articulo
> >
> > quiero sacar algo como eso hacer un listado de codigos x ej y que me
> > aparesca la lista numerada
> >
> > gracias
> >
> > ---------------------------(fin del mensaje)---------------------------
> > TIP 4: No hagas 'kill -9' a postmaster

--
Eduardo J. Ortega - Linux user #222873
"No fake - I'm a big fan of konqueror, and I use it for everything." -- Linus
Torvalds

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate

Jaime Casanova

unread,
Feb 10, 2007, 1:55:04 AM2/10/07
to
On 2/9/07, Daniel Medina <dme...@computec.com.co> wrote:
> Por algun motivo desconocido en la tabla pg_user esta dos veces
> registrado en usuario "postgres", por esto no me deja realizar backups
> con el comando pg_dump, como hago para eliminar uno de los dos registros
> teniendo en cuenta que los datos son identicos y que es el usuario admin
> del sistema
>
> y porque paso esto
>
> Saludos
>

por favor, podrias mostrar el resultado de este query?

set enable_indexscan to off ;
SELECT xmin, xmax, cmin, cmax, ctid, oid
FROM pg_user WHERE usename = 'postgres';

que version de postgres es esta?
ejecutas vacuum o vacuum full regularmente?

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majo...@postgresql.org so that your
message can get through to the mailing list cleanly

Daniel Medina

unread,
Feb 14, 2007, 10:31:07 AM2/14/07
to
estos campos no hacen parte de la tabla pg_user,

utilizo la version 7.4.8 y regularmente ejecuto los comandos

vacuum y vacuum full por el tamaño de la base

El sáb, 10-02-2007 a las 01:55 -0500, Jaime Casanova escribió:
> On 2/9/07, Daniel Medina <dme...@computec.com.co> wrote:
> > Por algun motivo desconocido en la tabla pg_user esta dos veces
> > registrado en usuario "postgres", por esto no me deja realizar backups
> > con el comando pg_dump, como hago para eliminar uno de los dos registros
> > teniendo en cuenta que los datos son identicos y que es el usuario admin
> > del sistema
> >
> > y porque paso esto
> >
> > Saludos
> >
>
> por favor, podrias mostrar el resultado de este query?
>
> set enable_indexscan to off ;
> SELECT xmin, xmax, cmin, cmax, ctid, oid
> FROM pg_user WHERE usename = 'postgres';
>
> que version de postgres es esta?
> ejecutas vacuum o vacuum full regularmente?
>
--

Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------

Daniel Medina

unread,
Feb 14, 2007, 10:32:29 AM2/14/07
to
El problema es que si borro una fila la otra tambien se borrar porque
nos datos del usuarios postgres son identicos en los dos registros, lo
otros es que la base es de 150 Gigas y no tengo espacio para
copiarla....

Gracias .....

Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Daniel Medina

unread,
Feb 14, 2007, 10:36:27 AM2/14/07
to
la tabla pg_user realmente es una vista de la tabla pg_shadow

--
Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------

Daniel Medina

unread,
Feb 14, 2007, 11:13:41 AM2/14/07
to
borre accidentalmente de la tabla pg_shadow el usurio postgres ,
existian dos registros de este usuario la diferencia era el pass

pero se borraron los dos

al tratar de crearlo con create user
create user postgres with SYSID 1 password 'xxxx';
ERROR: must be superuser to create users


o con el comando insert..

insert into pg_shadow
(usename,usesysid,usecreatedb,usesuper,usecatupd,passwd) values
('postgres',1,true,true,true,md5('*****'));
ERROR: user with ID 1 does not exist


ahora si estoy peor que antes....

Como hago para craear el usuario admin de postgres nuevamente .....


El vie, 09-02-2007 a las 16:21 -0500, Daniel Medina escribió:
> > Por algun motivo desconocido en la tabla pg_user esta dos veces
> > registrado en usuario "postgres", por esto no me deja realizar backups
> > con el comando pg_dump, como hago para eliminar uno de los dos registros
> > teniendo en cuenta que los datos son identicos y que es el usuario admin
> > del sistema
> >
> > y porque paso esto
> >
> > Saludos
> >
> >
>
>
>

> ---------------------------(fin del mensaje)---------------------------
> TIP 2: puedes desuscribirte de todas las listas simultneamente
> (enve "unregister TuDireccinDeCorreo" a majo...@postgresql.org)


--
Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------

Alvaro Herrera

unread,
Feb 14, 2007, 11:22:40 AM2/14/07
to
Daniel Medina escribió:

> estos campos no hacen parte de la tabla pg_user,

Por favor prueba lo mismo pero con la tabla pg_shadow. Tiene que ser
con un superusuario.

> utilizo la version 7.4.8 y regularmente ejecuto los comandos
>
> vacuum y vacuum full por el tamaño de la base

Con que usuario haces los VACUUM? Si no es un superusuario, se salta
las tablas de sistema por no tener permisos.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Alvaro Herrera

unread,
Feb 14, 2007, 1:52:12 PM2/14/07
to
Daniel Medina escribió:

> borre accidentalmente de la tabla pg_shadow el usurio postgres ,
> existian dos registros de este usuario la diferencia era el pass
>
> pero se borraron los dos
>
> al tratar de crearlo con create user
> create user postgres with SYSID 1 password 'xxxx';
> ERROR: must be superuser to create users
>
>
> o con el comando insert..
>
> insert into pg_shadow
> (usename,usesysid,usecreatedb,usesuper,usecatupd,passwd) values
> ('postgres',1,true,true,true,md5('*****'));
> ERROR: user with ID 1 does not exist

ja ja ja ...


Baja postmaster y levanta una sesion en modo standalone. Creo que es

postgres -P -O

(Mira postgres --help; depende de la version).

Ahi dentro puedes hacer el insert into pg_shadow, pero primero trata con
CREATE USER.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Daniel Medina

unread,
Feb 14, 2007, 3:05:36 PM2/14/07
to
Ok , pero si bajo y subo postgres sin el usuario admin no habra peligro
que no suba... y si sube con que usuario haria el cambio...

Gracias por tu colaboracion


El mié, 14-02-2007 a las 15:52 -0300, Alvaro Herrera escribió:
> Daniel Medina escribió:
> > borre accidentalmente de la tabla pg_shadow el usurio postgres ,
> > existian dos registros de este usuario la diferencia era el pass
> >
> > pero se borraron los dos
> >
> > al tratar de crearlo con create user
> > create user postgres with SYSID 1 password 'xxxx';
> > ERROR: must be superuser to create users
> >
> >
> > o con el comando insert..
> >
> > insert into pg_shadow
> > (usename,usesysid,usecreatedb,usesuper,usecatupd,passwd) values
> > ('postgres',1,true,true,true,md5('*****'));
> > ERROR: user with ID 1 does not exist
>
> ja ja ja ...
>
>
> Baja postmaster y levanta una sesion en modo standalone. Creo que es
>
> postgres -P -O
>
> (Mira postgres --help; depende de la version).
>
> Ahi dentro puedes hacer el insert into pg_shadow, pero primero trata con
> CREATE USER.
>
--

Alvaro Herrera

unread,
Feb 14, 2007, 3:30:51 PM2/14/07
to
Daniel Medina escribió:

> Ok , pero si bajo y subo postgres sin el usuario admin no habra peligro
> que no suba... y si sube con que usuario haria el cambio...

El modo standalone no usa "un usuario", sino que automaticamente asume
la identidad de un superusuario fijo. Puedes hacer el cambio sin
restricciones.

Postmaster puede subir sin ningun superusuario, asi que podras
levantarlo despues aunque no arregles el problema.

The PostgreSQL Company - Command Prompt, Inc.

Daniel Ricardo Medina

unread,
Feb 14, 2007, 3:40:20 PM2/14/07
to
Y me imagino que una ves subido el servicio
Entro asi

#psql nombre_base

Y listo ???? Hago los cambios sobre las tablas


-----Mensaje original-----
De: Alvaro Herrera [mailto:alvh...@commandprompt.com]
Enviado el: Miércoles, 14 de Febrero de 2007 03:31 p.m.
Para: Daniel Ricardo Medina
CC: pgsql-e...@postgresql.org; pgsql...@postgresql.org
Asunto: Re: [pgsql-es-ayuda] [ADMIN] tabla pg_user Ayuda......

Daniel Medina escribió:
> Ok , pero si bajo y subo postgres sin el usuario admin no habra
> peligro que no suba... y si sube con que usuario haria el cambio...

El modo standalone no usa "un usuario", sino que automaticamente asume la identidad de un superusuario fijo. Puedes hacer el cambio sin restricciones.

Postmaster puede subir sin ningun superusuario, asi que podras levantarlo despues aunque no arregles el problema.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

---------------------------(end of broadcast)---------------------------

Alvaro Herrera

unread,
Feb 14, 2007, 4:01:27 PM2/14/07
to
Daniel Ricardo Medina escribió:

> Y me imagino que una ves subido el servicio
> Entro asi
>
> #psql nombre_base
>
>
>
> Y listo ???? Hago los cambios sobre las tablas

No. Lee el manual; el modo standalone no acepta conexiones, sino que te
entrega el control de una sesion directamente.

PostgreSQL Replication, Consulting, Custom Development, 24x7 support

---------------------------(end of broadcast)---------------------------

Daniel Ricardo Medina

unread,
Feb 14, 2007, 4:04:55 PM2/14/07
to
Ok . Muchas gracias Alvaro.. Esto lo tengo que hacer en la madrugada entonces te contare como me fue


-----Mensaje original-----
De: Alvaro Herrera [mailto:alvh...@commandprompt.com]

Enviado el: Miércoles, 14 de Febrero de 2007 04:01 p.m.


Para: Daniel Ricardo Medina
CC: pgsql-e...@postgresql.org; pgsql...@postgresql.org
Asunto: Re: [pgsql-es-ayuda] [ADMIN] tabla pg_user Ayuda......

Daniel Ricardo Medina escribió:

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Jaime Casanova

unread,
Feb 15, 2007, 12:41:12 AM2/15/07
to
On 2/14/07, Daniel Medina <dme...@computec.com.co> wrote:
> estos campos no hacen parte de la tabla pg_user,
>

evidentemente nunca tratataste de hacer lo que te dije... los campos
que mencione (xmin, xmax, cmin, cmax, ctid, oid) son columnas de
sistema que se agregan automaticamente en todas las tablas...

la razon por la que te pedi que hicieras eso es que posiblemente
tenias dos versiones de la misma tupla, algo que puede ocurrir debido
a la conjuncion de MVCC y un bug en postgres entre otros factores...

el comentario de Alvaro sobre que si no ejecutas VACUUM con el
superusuario se salta los catalogos va por el mismo camino (creo
recordar levemente algo pero estoy cansado para tratar de pensar ;)

Alvaro, un vacuum como superusuario podria haber arreglado algo? o
hubiera tenido que borrar la tupla que pareciera mas vieja? o ninguna
de ambas podria haber funcionado? estoy asumiendo que el problema es
el que mencione arriba, no se me ocurre que mas pudo ser...

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

---------------------------(end of broadcast)---------------------------

Alvaro Herrera

unread,
Feb 15, 2007, 8:49:33 AM2/15/07
to
Jaime Casanova escribió:

> Alvaro, un vacuum como superusuario podria haber arreglado algo? o
> hubiera tenido que borrar la tupla que pareciera mas vieja? o ninguna
> de ambas podria haber funcionado? estoy asumiendo que el problema es
> el que mencione arriba, no se me ocurre que mas pudo ser...

La verdad es que no estoy 100% seguro porque no sabemos en que estado
estaban esas tuplas ... pero hace un tiempo le hice una consultoria a
una empresa que tuvo un problema muy similar, y cuando les dije que
hicieran un VACUUM sobre pg_shadow, no tuvo el resultado esperado.

Lo malo fue que hicimos un DELETE del usuario repetido, con el mismo
resultado: se borraron las dos tuplas :-) y no habia forma de volver a
crearlo.

Asi que lo que hicimos fue bajar el postmaster, abrir un proceso
standalone, crear el usuario nuevamente, volver a levantar postmaster.

Daniel Medina

unread,
Feb 18, 2007, 7:56:27 PM2/18/07
to
esto tratando de hacer los que dices abajo

borrar el usuario , los cree pero nuevamente me crea dos registros

select * from pg_user;
1: usename (typeid = 19, len = 64, typmod = -1, byval = f)
2: usesysid (typeid = 23, len = 4, typmod = -1, byval = t)
3: usecreatedb (typeid = 16, len = 1, typmod = -1, byval = t)
4: usesuper (typeid = 16, len = 1, typmod = -1, byval = t)
5: usecatupd (typeid = 16, len = 1, typmod = -1, byval = t)
6: passwd (typeid = 25, len = -1, typmod = -1, byval = f)
7: valuntil (typeid = 702, len = 4, typmod = -1, byval = t)
8: useconfig (typeid = 1009, len = -1, typmod = -1, byval =
f)
----
1: usename = "postgres" (typeid = 19, len = 64, typmod =
-1, byval = f)
2: usesysid = "1" (typeid = 23, len = 4, typmod = -1,
byval = t)
3: usecreatedb = "t" (typeid = 16, len = 1, typmod = -1,
byval = t)
4: usesuper = "t" (typeid = 16, len = 1, typmod = -1,
byval = t)
5: usecatupd = "t" (typeid = 16, len = 1, typmod = -1,
byval = t)
6: passwd = "********" (typeid = 25, len = -1, typmod = -1,
byval = f)
----


cree un usuario como usesyid = 1 y trate de borrar el usuario postgres
pero no hace nada..

que comandos debo utilizar

Gracias ...

El jue, 15-02-2007 a las 10:49 -0300, Alvaro Herrera escribió:
> Jaime Casanova escribió:
>
> > Alvaro, un vacuum como superusuario podria haber arreglado algo? o
> > hubiera tenido que borrar la tupla que pareciera mas vieja? o ninguna
> > de ambas podria haber funcionado? estoy asumiendo que el problema es
> > el que mencione arriba, no se me ocurre que mas pudo ser...
>
> La verdad es que no estoy 100% seguro porque no sabemos en que estado
> estaban esas tuplas ... pero hace un tiempo le hice una consultoria a
> una empresa que tuvo un problema muy similar, y cuando les dije que
> hicieran un VACUUM sobre pg_shadow, no tuvo el resultado esperado.
>
> Lo malo fue que hicimos un DELETE del usuario repetido, con el mismo
> resultado: se borraron las dos tuplas :-) y no habia forma de volver a
> crearlo.
>
> Asi que lo que hicimos fue bajar el postmaster, abrir un proceso
> standalone, crear el usuario nuevamente, volver a levantar postmaster.
>
--

Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140

Daniel Medina

unread,
Feb 18, 2007, 8:06:01 PM2/18/07
to
Trato de borrar el usuario postgres y me dice que no existe , luego
vuelvo a consultar la tabla pg_shadow y sale esto

1: usename = "postgres" typeid = 19, len = 64, typmod = -1, byval = f)


2: usesysid = "1" (typeid = 23, len = 4, typmod = -1, byval = t)
3: usecreatedb = "t" (typeid = 16, len = 1, typmod = -1, byval = t)
4: usesuper = "t" (typeid = 16, len = 1, typmod = -1, byval = t)
5: usecatupd = "t" (typeid = 16, len = 1, typmod = -1, byval = t)

----
1: usename = "daniel" (typeid = 19, len = 64, typmod = -1, byval = f)


2: usesysid = "1" (typeid = 23, len = 4, typmod = -1, byval = t)

3: usecreatedb = "f" (typeid = 16, len = 1, typmod = -1, byval = t)
4: usesuper = "f" (typeid = 16, len = 1, typmod = -1, byval = t)
5: usecatupd = "f" (typeid = 16, len = 1, typmod = -1, byval = t)
6: passwd = "md5xxx" (typeid = 25, len = -1, typmod = -1, byval =
f)


El jue, 15-02-2007 a las 10:49 -0300, Alvaro Herrera escribió:

> Jaime Casanova escribió:
>
> > Alvaro, un vacuum como superusuario podria haber arreglado algo? o
> > hubiera tenido que borrar la tupla que pareciera mas vieja? o ninguna
> > de ambas podria haber funcionado? estoy asumiendo que el problema es
> > el que mencione arriba, no se me ocurre que mas pudo ser...
>
> La verdad es que no estoy 100% seguro porque no sabemos en que estado
> estaban esas tuplas ... pero hace un tiempo le hice una consultoria a
> una empresa que tuvo un problema muy similar, y cuando les dije que
> hicieran un VACUUM sobre pg_shadow, no tuvo el resultado esperado.
>
> Lo malo fue que hicimos un DELETE del usuario repetido, con el mismo
> resultado: se borraron las dos tuplas :-) y no habia forma de volver a
> crearlo.
>
> Asi que lo que hicimos fue bajar el postmaster, abrir un proceso
> standalone, crear el usuario nuevamente, volver a levantar postmaster.
>
--

Daniel Ricardo Medina R.
Ing. de Desarrollo
Computec S.A. - Documentos
tel: 2607111 ext. 140


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

0 new messages