Portál AbcLinuxu, 8. listopadu 2025 22:27
Uz asi pul hodiny zkousim zjistit, jak vypsat seznam databazi, ktere patri urcitemu vlastnikovi. Pouzivam psql jako klienta.
Prikaz
\lmi vypise vsechny DB, jenze na serveru jich je tolik, ze se v tom neda vyznat, chtel bych videt jen svoje DB.
Proste neco ve smyslu
select * from pg_database where owner='uzivatel';
\l s nejakym parametrem?
Řešení dotazu:
[pavel@nemesis ~]$ psql -E postgres
Welcome to psql 8.3.9, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=# \l
********* QUERY **********
SELECT d.datname as "Name",
r.rolname as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding"
FROM pg_catalog.pg_database d
JOIN pg_catalog.pg_roles r ON d.datdba = r.oid
ORDER BY 1;
**************************
List of databases
Name | Owner | Encoding
-----------+----------+----------
foo | pavel | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(4 rows)
Pak staci jen zkopirovat dotaz a upravit:
postgres=# SELECT d.datname as "Name",
r.rolname as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding"
FROM pg_catalog.pg_database d
JOIN pg_catalog.pg_roles r ON d.datdba = r.oid
WHERE r.rolname = 'pavel' --<<<
ORDER BY 1;
Name | Owner | Encoding
------+-------+----------
foo | pavel | UTF8
(1 row)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.