El problema es que pgAdmin consulta el catalogo de la base de datos, para
mostrar en su estructura las bases de datos, roles, usuarios, esquemas,
tablespaces y demás elementos existente. Si revisas en tu log podrás ver las
diferentes consultas que hace, por ejemplo para buscar las bases de datos:
SELECT db.oid, datname, db.dattablespace AS spcoid, spcname, datallowconn,
(SELECT array(select coalesce('''' || rolname || '''', '') || '=' ||
unnest(setconfig) FROM pg_db_role_setting setting LEFT JOIN pg_roles role ON
setting.setrole=role.oid WHERE setdatabase = db.oid)) AS datconfig, datacl,
pg_encoding_to_char(encoding) AS serverencoding, pg_get_userbyid(datdba) AS
datowner,has_database_privilege(db.oid, 'CREATE') as cancreate,
current_setting('default_tablespace') AS default_tablespace,
descr.description
, db.datconnlimit as connectionlimit, db.datcollate as collate,
db.datctype as ctype FROM pg_database db
LEFT OUTER JOIN pg_tablespace ta ON db.dattablespace=ta.OID
LEFT OUTER JOIN pg_shdescription descr ON db.oid=descr.objoid
ORDER BY datname
Aunque ya después este te valida cualquier intento de conexión, porque como
bien dices, solo un usuario puede conectarse a una DB y al tratar de realizar
una conexión si no tienes una entrada en tu pg_hba.conf, pues no te podrás
conectar, independientemente de que si esos usuarios no tienen privilegios
administrativos, no podrán eliminar las bases de datos, ni crear usuario ni
bases de datos.
Saludos.
De: [email protected]
[mailto:[email protected]] En nombre de felipe guzman
Enviado el: miércoles, 18 de enero de 2012 07:25:AM
Para: Ayuda
Asunto: [pgsql-es-ayuda] Consulta sobre pgadmin
Señores, junto en saludarles les comento tengo en un servidor que posee al
rededor de 12 bases de datos las cuales tienen usuarios especificos para cada
base de datos, cada uno de ellos con permisos especificos es decir puede entrar
a una base de datos y a un esquema pero no puede entrar a las demás base de
datos..
Pero resulta que al momento de ingresar con un usuario X a la base de datos con
el pg admin le muestra al usuario que existen 12 bases de datos, al momento de
hacer click para ingresar a una base de datos que no tiene permiso este le da
la alerta que no tiene permiso para ingresar.
Ahora mi pregunta: ¿Se pueden ocultar que el solo vea lo que tiene permiso, es
decir su base de datos, y no vea ni los roles y demases?? (En el pg-admin)
nose si me explique bien?
Saludos
--
Felipe Guzman Vargas
Analista Programador Computacional
User Linux - GNU