Um einen Produktionsdatenbankserver zu testen, sollten Sie zusätzliche Rollen erstellen, da das regelmäßige Arbeiten in Ihren Datenbanken als Standard-Superuser-Rolle riskant ist.
Dieser Artikel zeigt Ihnen, wie Sie zusätzliche Rollen mit PostgreSQL® erstellen, indem Sie entweder psql
verwenden Client-Befehle oder Shell-Befehle. Sie müssen den Linux®-Benutzer postgres verwenden ®, mit beiden Methoden.
Melden Sie sich mit Ihren Linux-Anmeldeinformationen bei Ihrer Instanz an und führen Sie den folgenden Befehl aus, um Benutzer auf postgres umzustellen Benutzer:
# sudo su - postgres
psql-Befehle verwenden
Führen Sie die folgenden Schritte aus, um Benutzer mithilfe von psql
zu erstellen oder zu löschen Kunde.
Mit psql verbinden
Stellen Sie eine Verbindung zum Datenbankserver her, indem Sie den psqlclient mit dem postgres
verwenden Rolle:
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=#
Erstellen Sie eine Rolle
Nachdem Sie sich mit psql
verbunden haben Client, führen Sie den folgenden Befehl aus, um eine Rolle mit dem LOGIN
zu erstellen -Attribut und ein nicht leeres, MD5-verschlüsseltes Passwort:
postgres=#CREATE ROLE demorole1 WITH LOGIN ENCRYPTED PASSWORD 'password1';
Hinweis :Das abschließende Semikolon (; ) am Ende der SQL-Anweisung ist erforderlich. Die einfachen Anführungszeichen ( ' ' ) sind nicht Teil des Passworts, müssen es aber einschließen.
Bestätigen Sie, dass Sie die Rolle erfolgreich erstellt haben, indem Sie den folgenden Befehl verwenden:
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)
Eine Rolle löschen
Wenn Sie eine Rolle nicht mehr benötigen, können Sie eine Rolle löschen (löschen oder entfernen), indem Sie den folgenden Befehl verwenden:
postgres=# DROP ROLE demorole1;
Wenn Sie dann mit dem \du
überprüfen Befehl, können Sie diesen demorole1
sehen nicht mehr aufgeführt.
Erstellen Sie einen Superuser
Gelegentlich müssen Sie möglicherweise zusätzliche Superuser-Rollen erstellen, z. B. wenn Sie einen Datenbankprogrammierer haben, dem Sie vertrauen, den Postgress-Server zu verwalten.
Führen Sie den folgenden Befehl aus, um einen Superuser zu erstellen:
postgres=#CREATE ROLE mysuperuser2 WITH SUPERUSER CREATEDB CREATEROLE LOGIN ENCRYPTED PASSWORD 'mysuperpass2';
Der Befehl setzt den LOGIN
-Attribut und gibt ein nicht leeres Passwort an. Diese Faktoren sind wichtig, wenn Sie diese Superuser-Rolle für lokale und entfernte Verbindungen zur Datenbank beabsichtigen.
psql beenden
Zum Beenden von psql
, führen Sie den folgenden Befehl aus:
postgres=# \q
...
postgres@demo:~$
Shell-Befehle verwenden
Sie können Datenbankrollen erstellen und löschen, indem Sie die Shell-Befehle createuser und dropuser verwenden, die Wrapper für die CREATE- und DROPSQL-Anweisungen sind. Eine standardmäßige Postgres-Installation enthält diese Befehle.
Benutzer erstellen
Führen Sie den folgenden Befehl aus, um eine Nicht-Superuser-Rolle mit dem LOGIN
zu erstellen Attribut:
postgres@demo:~$ createuser -PE demorole2
Enter password for new role:
Enter it again:
...
postgres@demo:~$
Das -P
Flag fordert Sie auf, ein Passwort für die neue Rolle festzulegen, und das -E
Flag gibt an, dass das Passwort als MD5-verschlüsselter String gespeichert werden soll.
Um die Rollenerstellung zu überprüfen, stellen Sie eine Verbindung zu psql
her und führen Sie den folgenden Befehl aus:
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
Führen Sie den folgenden Befehl aus, um eine Rolle zu löschen:
postgres@demo:~$ dropuser -i demorole2
...
Role "demorole2" will be permanently removed.
Are you sure? (y/n) y
...
postgres@demo:~$
Das -i
Flag bietet eine Bestätigungsaufforderung, was eine gute Sicherheitsmaßnahme ist, wenn Sie einen potenziell destruktiven Befehl ausführen.
Erstellen Sie einen Superuser
Gelegentlich müssen Sie möglicherweise zusätzliche Superuser-Rollen erstellen, z. B. wenn Sie einen Datenbankprogrammierer haben, dem Sie vertrauen, den Postgress-Server zu verwalten.
Führen Sie den folgenden Befehl aus, um einen Superuser zu erstellen:
postgres@demo:~$ createuser -sPE mysuperuser