Thread: tabla pg_user Ayuda......
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
> 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 > >
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 <dmedina@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 majordomo@postgresql.org)
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
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
On 2/9/07, Daniel Medina <dmedina@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
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 <dmedina@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
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 ..... El sáb, 10-02-2007 a las 00:28 -0500, Eduardo J. Ortega escribió: > 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 > -- Daniel Ricardo Medina R. Ing. de Desarrollo Computec S.A. - Documentos tel: 2607111 ext. 140
la tabla pg_user realmente es una vista de la tabla pg_shadow El vie, 09-02-2007 a las 17:10 -0600, GABRIEL COLINA escribió: > 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 <dmedina@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 > majordomo@postgresql.org) > > > > __________________________________________________ > Correo Yahoo! > Espacio para todos tus mensajes, antivirus y antispam ¡gratis! > Regístrate ya - http://correo.espanol.yahoo.com/ > -- Daniel Ricardo Medina R. Ing. de Desarrollo Computec S.A. - Documentos tel: 2607111 ext. 140
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 majordomo@postgresql.org) -- Daniel Ricardo Medina R. Ing. de Desarrollo Computec S.A. - Documentos tel: 2607111 ext. 140
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
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
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. > -- Daniel Ricardo Medina R. Ing. de Desarrollo Computec S.A. - Documentos tel: 2607111 ext. 140
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.
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:alvherre@commandprompt.com] Enviado el: Miércoles, 14 de Febrero de 2007 03:31 p.m. Para: Daniel Ricardo Medina CC: pgsql-es-ayuda@postgresql.org; pgsql-admin@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 hacerel 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.
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. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Ok . Muchas gracias Alvaro.. Esto lo tengo que hacer en la madrugada entonces te contare como me fue -----Mensaje original----- De: Alvaro Herrera [mailto:alvherre@commandprompt.com] Enviado el: Miércoles, 14 de Febrero de 2007 04:01 p.m. Para: Daniel Ricardo Medina CC: pgsql-es-ayuda@postgresql.org; pgsql-admin@postgresql.org Asunto: Re: [pgsql-es-ayuda] [ADMIN] tabla pg_user Ayuda...... 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. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
On 2/14/07, Daniel Medina <dmedina@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
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. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
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
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