Chcete-li otestovat produkční databázový server, měli byste vytvořit další role, protože pravidelně pracujete ve svých databázích jako výchozí role superuživatele je riskantní.
Tento článek ukazuje, jak vytvořit další role s PostgreSQL® pomocí psql
klientské příkazy nebo příkazy shellu. Musíte použít uživatele Linux®, postgres ®, s oběma metodami.
Přihlaste se ke své instanci pomocí svých přihlašovacích údajů pro Linux a spusťte následující příkaz pro přepnutí uživatelů na postgres uživatel:
# sudo su - postgres
Použití příkazů psql
Pomocí následujících kroků vytvoříte nebo zrušíte uživatele pomocí psql
klient.
Připojit se k psql
Připojte se k databázovému serveru pomocí thepsqlclient s postgres
role:
postgres@demo:~$ psql -U postgres
...
Welcome to psql 8.3.6, 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=#
Vytvořte roli
Po připojení pomocí psql
klient, spusťte následující příkaz k vytvoření role, která má LOGIN
atribut a neprázdné heslo zašifrované MD5:
postgres=#CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD 'password1';
Poznámka :Je vyžadován koncový středník (; ) na konci příkazu SQL. Jednoduché uvozovky ( ' ' ) nejsou součástí hesla, ale musí je uzavřít.
Pomocí následujícího příkazu ověřte, že jste roli úspěšně vytvořili:
postgres=# \du
List of roles
Role name | Superuser | Create role | Create DB | Connections | Member of
-----------+-----------+-------------+-----------+-------------+-----------
demorole1 | no | no | no | no limit | {}
postgres | yes | yes | yes | no limit | {}
(2 rows)
Uvolnění role
Když již roli nepotřebujete, můžete ji zrušit (smazat nebo odebrat) pomocí následujícího příkazu:
postgres=# DROP ROLE demorole1;
Pokud to potom zkontrolujete pomocí \du
můžete vidět, že demorole1
již není uveden.
Vytvořit superuživatele
Občas může být potřeba vytvořit další role superuživatele, například když máte databázového programátora, kterému důvěřujete, že bude spravovat postgresserver.
Chcete-li vytvořit superuživatele, spusťte následující příkaz:
postgres=#CREATE ROLE mysuperuser2 WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'mysuperpass2';
Příkaz nastaví LOGIN
atribut a určuje neprázdné heslo. Tyto faktory jsou důležité, pokud zamýšlíte tuto roli superuživatele pro místní a vzdálená připojení k databázi.
Ukončit psql
Chcete-li ukončit psql
, spusťte následující příkaz:
postgres=# \q
...
postgres@demo:~$
Používejte příkazy shellu
Databázové role můžete vytvořit a zrušit pomocí příkazůcreateuseanddropusershell, což jsou obaly pro příkazy CREATE a DROPSQL. Standardní instalace Postgres obsahuje tyto příkazy.
createuser
Spuštěním následujícího příkazu vytvořte roli bez superuživatele, která má LOGIN
atribut:
postgres@demo:~$ createuser -PE demorole2
Enter password for new role:
Enter it again:
...
postgres@demo:~$
-P
příznak vás vyzve k nastavení hesla pro novou roli a -E
flag označuje uložení hesla jako řetězec zašifrovaný MD5.
Chcete-li ověřit vytvoření role, připojte se k psql
a spusťte následující příkaz:
postgres=# \du
List of roles
Role name | Superuser | Create role | Create DB | Connections | Member of
-----------+-----------+-------------+-----------+-------------+-----------
demorole2 | no | no | no | no limit | {}
postgres | yes | yes | yes | no limit | {}
(2 rows)
dropuser
Chcete-li zrušit roli, spusťte následující příkaz:
postgres@demo:~$ dropuser -i demorole2
...
Role "demorole2" will be permanently removed.
Are you sure? (y/n) y
...
postgres@demo:~$
-i
flag poskytuje potvrzovací výzvu, což je dobré bezpečnostní opatření při spuštění potenciálně destruktivního příkazu.
Vytvořit superuživatele
Občas může být potřeba vytvořit další role superuživatele, například když máte databázového programátora, kterému důvěřujete, že bude spravovat postgresserver.
Chcete-li vytvořit superuživatele, spusťte následující příkaz:
postgres@demo:~$ createuser -sPE mysuperuser