postgres

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
postgres [27/07/2025 - 15:16] thommie_netzwissen.depostgres [27/07/2025 - 15:16] (aktuell) thommie_netzwissen.de
Zeile 7: Zeile 7:
 psql Cheat Sheet: [[https://tomcam.github.io/postgres/|https://tomcam.github.io/postgres/]] psql Cheat Sheet: [[https://tomcam.github.io/postgres/|https://tomcam.github.io/postgres/]]
 <code> <code>
-thommie@db2b:~$ sudo su postgres 
  
 +thommie@db2b:~$ sudo su postgres
  
 </code> </code>
  
-<code>\l +<code> 
 +\l
  
 </code> </code>
Zeile 19: Zeile 19:
 listet alle Datenbanken listet alle Datenbanken
  
-  * * \c verbindet zu einer Datenbank\c verbindet zu einer Datenbank +  * \c verbindet zu einer Datenbank\c verbindet zu einer Datenbank* \c verbindet zu einer Datenbank\c verbindet zu einer Datenbank 
-  * * \dt zeigt die Tabellen nach einer Verbindung\dt zeigt die Tabellen nach einer Verbindung +  * \dt zeigt die Tabellen nach einer Verbindung\dt zeigt die Tabellen nach einer Verbindung* \dt zeigt die Tabellen nach einer Verbindung\dt zeigt die Tabellen nach einer Verbindung 
-  * * \d und \d+ zeigt die Spalten einer Tabelle\d und \d+ zeigt die Spalten einer Tabelle +  * \d und \d+ zeigt die Spalten einer Tabelle\d und \d+ zeigt die Spalten einer Tabelle* \d und \d+ zeigt die Spalten einer Tabelle\d und \d+ zeigt die Spalten einer Tabelle 
-  * * \du Benutzerrollen\du Benutzerrollen+  * * * \du Benutzerrollen\du Benutzerrollen* \du Benutzerrollen\du Benutzerrollen
  
 ===== Datenbank und User anlegen ===== ===== Datenbank und User anlegen =====
  
-<code>create database sqlmail;+<code> 
 +create database sqlmail;
  
 create user sqlmail with encrypted password 'xxxxxxxxxxxx'; create user sqlmail with encrypted password 'xxxxxxxxxxxx';
  
 grant all privileges on database sqlmail to sqlmail; grant all privileges on database sqlmail to sqlmail;
- 
  
 </code> </code>
Zeile 39: Zeile 39:
 WER greift gerade auf die DB zu? WER greift gerade auf die DB zu?
  
-<code>SELECT usename, datname, state FROM pg_stat_activity WHERE usename='discourse2'; +<code> 
 +SELECT usename, datname, state FROM pg_stat_activity WHERE usename='discourse2';
  
 </code> </code>
Zeile 46: Zeile 46:
 Alle aktiven Verbindungen zu dieser DB trennen Alle aktiven Verbindungen zu dieser DB trennen
  
-<code>SELECT pg_terminate_backend(pid)+<code> 
 +SELECT pg_terminate_backend(pid)
 FROM pg_stat_activity FROM pg_stat_activity
 WHERE datname = 'discourse2' AND leader_pid IS NULL; WHERE datname = 'discourse2' AND leader_pid IS NULL;
- 
  
 </code> </code>
Zeile 55: Zeile 55:
 Danach kann man die Datenbank duplizieren, indem man die Quelldatenbank als Template benutzt Danach kann man die Datenbank duplizieren, indem man die Quelldatenbank als Template benutzt
  
-<code>CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser; +<code> 
 +CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
  
 </code> </code>
Zeile 70: Zeile 70:
 Nach "\c discourse2": alle Tabellen in einer DB löschen Nach "\c discourse2": alle Tabellen in einer DB löschen
 <code> <code>
 +
 DO $$ DECLARE DO $$ DECLARE
   r RECORD;   r RECORD;
Zeile 77: Zeile 78:
   END LOOP;   END LOOP;
 END $$; END $$;
- 
  
 </code> </code>
Zeile 89: Zeile 89:
 neuen User anlegen ("ROLE") neuen User anlegen ("ROLE")
 <code> <code>
 +
 postgres=# CREATE ROLE discourse2; postgres=# CREATE ROLE discourse2;
 CREATE ROLE CREATE ROLE
 postgres=# postgres=#
- 
  
 </code> </code>
Zeile 98: Zeile 98:
 Passwort setzen Passwort setzen
  
-<code>ALTER ROLE [username] WITH PASSWORD 'xxxx'; +<code> 
 +ALTER ROLE [username] WITH PASSWORD 'xxxx';
  
 </code> </code>
Zeile 107: Zeile 107:
 nur login nur login
  
-<code>ALTER ROLE discourse2 LOGIN; +<code> 
 +ALTER ROLE discourse2 LOGIN;
  
 </code> </code>
Zeile 114: Zeile 114:
 Weitere Privilegien: Weitere Privilegien:
  
-<code>GRANT privilege_list | ALL+<code> 
 +GRANT privilege_list | ALL
 ON  table_name ON  table_name
 TO  role_name; TO  role_name;
- 
  
 </code> </code>
Zeile 123: Zeile 123:
 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. 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> <code>
 +
 GRANT ALL ON DATABASE [dbname] TO [username]; GRANT ALL ON DATABASE [dbname] TO [username];
  
 postgres=# GRANT ALL ON DATABASE keycloak TO keycloak; postgres=# GRANT ALL ON DATABASE keycloak TO keycloak;
 GRANT GRANT
- 
  
 </code> </code>
Zeile 133: Zeile 133:
 Löschen eines Users Löschen eines Users
  
-<code>drop user IF EXISTS dendrite; +<code> 
 +drop user IF EXISTS dendrite;
  
 </code> </code>
Zeile 142: Zeile 142:
 Alle Tabellen löschen Alle Tabellen löschen
  
-<code>DO $$+<code> 
 +DO $$
 DECLARE DECLARE
     r RECORD;     r RECORD;
Zeile 150: Zeile 151:
     END LOOP;     END LOOP;
 END $$; END $$;
- 
  
 </code> </code>
Zeile 156: Zeile 156:
 check check
 <code> <code>
 +
 SELECT tablename FROM pg_tables WHERE schemaname = 'public'; SELECT tablename FROM pg_tables WHERE schemaname = 'public';
- 
  
 </code> </code>
Zeile 163: Zeile 163:
 ===== Daten-Aktionen ===== ===== Daten-Aktionen =====
  
-<code>do $$ declare+<code> 
 +do $$ declare
    r record;    r record;
 begin begin
Zeile 170: Zeile 171:
    end loop;    end loop;
 end $$; end $$;
- 
  
 </code> </code>
Zeile 176: Zeile 176:
 Komplette Datenbank löschen Komplette Datenbank löschen
 <code> <code>
 +
 drop DATABASE onlyoffice; drop DATABASE onlyoffice;
- 
  
 </code> </code>
Zeile 191: Zeile 191:
 ====== Dump einer Datenbank als sql file ====== ====== Dump einer Datenbank als sql file ======
  
-  * - Login auf postgres ServerLogin auf postgres Server +  - Login auf postgres ServerLogin auf postgres Server- Login auf postgres ServerLogin auf postgres Server 
-  * - sudo nach postgressudo nach postgres +  - sudo nach postgressudo nach postgres- sudo nach postgressudo nach postgres 
-  * - Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)+  * * - Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)- Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)Wechsel ins Home Dir von postgres (wg. Schreibrechten für sql File)
  
-<code>root@db2b:/home/thommie# sudo su postgres+<code> 
 +root@db2b:/home/thommie# sudo su postgres
 postgres@db2b:/home/thommie$ cd ~ postgres@db2b:/home/thommie$ cd ~
 postgres@db2b:~$ pwd postgres@db2b:~$ pwd
 /var/lib/postgresql /var/lib/postgresql
- 
  
 </code> </code>
Zeile 205: Zeile 205:
 mit psql \l Namen aller DBs auflisten mit psql \l Namen aller DBs auflisten
  
-<code>postgres@db2b:~$ psql+<code> 
 +postgres@db2b:~$ psql
 psql (13.6 (Ubuntu 13.6-1.pgdg20.04+1)) psql (13.6 (Ubuntu 13.6-1.pgdg20.04+1))
 Type "help" for help. Type "help" for help.
 postgres=# \l postgres=# \l
- 
  
 </code> </code>
Zeile 215: Zeile 215:
 Danach die Datenbanken dumpen: Danach die Datenbanken dumpen:
  
-<code>pg_dump pixelfed>> pixelfed_tokoeka.sql +<code> 
 +pg_dump pixelfed>> pixelfed_tokoeka.sql
  
 </code> </code>
Zeile 222: Zeile 222:
 Datenbank löschen Datenbank löschen
  
-<code>$ dropdb your_database​ +<code> 
 +$ dropdb your_database​
  
 </code> </code>
Zeile 231: Zeile 231:
 Test einer postgres Verbindung: pg_isready ist Teil von postgresql-client Test einer postgres Verbindung: pg_isready ist Teil von postgresql-client
  
-<code>pg_isready -d <db_name> -h <host_name> -p <port_number> -U <db_user> +<code> 
 +pg_isready -d <db_name> -h <host_name> -p <port_number> -U <db_user>
  
 </code> </code>
Zeile 238: Zeile 238:
 Praktisch: Praktisch:
  
-<code>root@docker2:/var/discourse# pg_isready -d Discoursedev -h 10.10.10.18 -p 5432 -U Discourse+<code> 
 +root@docker2:/var/discourse# pg_isready -d Discoursedev -h 10.10.10.18 -p 5432 -U Discourse
 10.10.10.18:5432 - Verbindungen werden angenommen 10.10.10.18:5432 - Verbindungen werden angenommen
 root@docker2:/var/discourse# root@docker2:/var/discourse#
- 
  
 </code> </code>
Zeile 247: Zeile 247:
 ====== Import der Datenbanken ====== ====== Import der Datenbanken ======
  
-<code>psql -U postgres -W -d keycloak -f keycloak_tokoeka.sql +<code> 
 +psql -U postgres -W -d keycloak -f keycloak_tokoeka.sql
  
 </code> </code>
Zeile 258: Zeile 258:
 [[https://www.shubhamdipt.com/blog/how-to-change-postgresql-database-encoding-to-utf8/|https://www.shubhamdipt.com/blog/how-to-change-postgresql-database-encoding-to-utf8/]] [[https://www.shubhamdipt.com/blog/how-to-change-postgresql-database-encoding-to-utf8/|https://www.shubhamdipt.com/blog/how-to-change-postgresql-database-encoding-to-utf8/]]
 <code> <code>
 +
 postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1'; postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
 postgres=# DROP DATABASE template1; postgres=# DROP DATABASE template1;
Zeile 265: Zeile 266:
 You are now connected to database "template1" as user "postgres". You are now connected to database "template1" as user "postgres".
 template1=# VACUUM FREEZE; template1=# VACUUM FREEZE;
- 
  
 </code> </code>
  • postgres.txt
  • Zuletzt geändert: 27/07/2025 - 15:16
  • von thommie_netzwissen.de