postgres

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
postgres [18/04/2025 - 10:40] – [Benutzeraktionen] adminpostgres [11/05/2025 - 16:46] (aktuell) thommie_netzwissen.de
Zeile 23: Zeile 23:
   * \d und \d+ zeigt die Spalten einer Tabelle   * \d und \d+ zeigt die Spalten einer Tabelle
   * \du Benutzerrollen   * \du Benutzerrollen
 +
 +===== Datenbank und User anlegen =====
 +
 +<code>
 +create database sqlmail;
 +
 +create user sqlmail with encrypted password 'xxxxxxxxxxxx';
 +
 +grant all privileges on database sqlmail to sqlmail;
 +
 +</code>
  
 ===== Datenbank duplizieren ===== ===== Datenbank duplizieren =====
Zeile 29: Zeile 40:
  
 <code> <code>
- <font inherit/monospace;;inherit;;#000000background-color:#ffffff;>SELECT usename, datname, state FROM pg_stat_activity WHERE usename='discourse'</font>+SELECT usename, datname, state FROM pg_stat_activity WHERE usename='discourse2';
  
 </code> </code>
  
-zuerst alle aktiven Verbindungen trennen+Alle aktiven Verbindungen zu dieser DB trennen
  
 <code> <code>
 SELECT pg_terminate_backend(pid) SELECT pg_terminate_backend(pid)
 FROM pg_stat_activity FROM pg_stat_activity
-WHERE datname = 'discourse' AND leader_pid IS NULL;+WHERE datname = 'discourse2' AND leader_pid IS NULL;
  
 </code> </code>
Zeile 57: Zeile 68:
 dt listet alle Tabellen in einer Datenbank auf dt listet alle Tabellen in einer Datenbank auf
  
-Alle Tabellen in einer DB löschen+Nach "\c discourse2": alle Tabellen in einer DB löschen
 <code> <code>
  
Zeile 77: Zeile 88:
  
 neuen User anlegen ("ROLE") neuen User anlegen ("ROLE")
 +<code>
  
-<code>postgres=# CREATE ROLE discourse2;+postgres=# CREATE ROLE discourse2;
 CREATE ROLE CREATE ROLE
 postgres=# postgres=#
Zeile 91: Zeile 103:
 </code> </code>
  
-Zugriffsrechte auf eine Datenbank erteilen+==== GRANT Statement ==== 
 + 
 +nur login
  
 <code> <code>
 +ALTER ROLE discourse2 LOGIN;
 +
 +</code>
 +
 +Weitere Privilegien:
 +
 +<code>
 +GRANT privilege_list | ALL
 +ON  table_name
 +TO  role_name;
 +
 +</code>
 +
 +privilege_list kann ''[[https://neon.tech/postgresql/postgresql-tutorial/postgresql-select|SELECT'']]'' , ''[[https://neon.tech/postgresql/postgresql-tutorial/postgresql-insert|INSERT'']]'',''[[https://neon.tech/postgresql/postgresql-tutorial/postgresql-update|UPDATE'']]'', ''[[https://neon.tech/postgresql/postgresql-tutorial/postgresql-delete|DELETE'']]'',''[[https://neon.tech/postgresql/postgresql-tutorial/postgresql-truncate-table|TRUNCATE'']]''etc. sein. Mit ALL geht alles (lesen, schreiben, löschen usw.
 +<code>
 +
 GRANT ALL ON DATABASE [dbname] TO [username]; GRANT ALL ON DATABASE [dbname] TO [username];
  
Zeile 108: Zeile 138:
 </code> </code>
  
 +===== Tabellen-Aktionen =====
 +
 +Alle Tabellen löschen
 +
 +<code>
 +DO $$
 +DECLARE
 +    r RECORD;
 +BEGIN
 +    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
 +   EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
 +    END LOOP;
 +END $$;
 +
 +</code>
 +
 +check
 +<code>
 +
 +SELECT tablename FROM pg_tables WHERE schemaname = 'public';
 +
 +</code>
 +
 +===== Daten-Aktionen =====
 +
 +<code>
 +do $$ declare
 +   r record;
 +begin
 +   for r in (select tablename from pg_tables where schemaname = 'my-schema-name') loop
 +   execute 'drop table if exists ' || quote_ident(r.tablename) || ' cascade';
 +   end loop;
 +end $$;
 +
 +</code>
 +
 +Komplette Datenbank löschen
 +<code>
 +
 +drop DATABASE onlyoffice;
 +
 +</code>
  
 ===== Historie der Kommandos in psql ===== ===== Historie der Kommandos in psql =====
Zeile 179: Zeile 251:
  
 </code> </code>
- 
-====== Alte Daten löschen ====== 
- 
-Datenbank 
- 
-<code> 
-drop DATABASE onlyoffice; 
- 
-</code> 
- 
  
 ===== Templates und UTF8 encoding ===== ===== Templates und UTF8 encoding =====
  • postgres.1744972823.txt.gz
  • Zuletzt geändert: 18/04/2025 - 10:40
  • von admin