Zeile 4: |
Zeile 4: |
| | | |
| Die [[Debian]]-Pakete sehen getrennte Konfigurations- und Datenverzeichnisse vor. Siehe https://wiki.debian.org/PostgreSql . | | Die [[Debian]]-Pakete sehen getrennte Konfigurations- und Datenverzeichnisse vor. Siehe https://wiki.debian.org/PostgreSql . |
| + | |
| + | Siehe zu ersten Schritten mit Postgres auch: |
| + | * https://www3.ntu.edu.sg/home/ehchua/programming/sql/PostgreSQL_GetStarted.html |
| | | |
| === User anlegen === | | === User anlegen === |
Zeile 12: |
Zeile 15: |
| CREATE USER BENUTZER WITH PASSWORD 'BENUTZERPASSWORT'; | | CREATE USER BENUTZER WITH PASSWORD 'BENUTZERPASSWORT'; |
| | | |
− | Ggf. muss man noch die Datei <code> /etc/postgresql/9.5/main/pg_hba.conf </code> so anpassen, dass auch eine Einwahl mit Passwort möglich ist. Denn normalerweise akzeptiert PostgreSQL nur die <code>peer</code>-Authentifizierungsmethode über den Linux-User.
| |
| | | |
− | Falls selbst diese Zeile fehlen sollte, muss eine Zeile wie die folgende eingefügt werden: | + | Normalerweise akzeptiert PostgreSQL nur die <code>peer</code>-Authentifizierungsmethode über den Linux-User. Falls selbst diese Berechtigung fehlen sollte, muss eine Zeile wie die folgende eingefügt werden: |
| local sameuser USER peer | | local sameuser USER peer |
| USER sollte dem Namen des Linux-User entsprechen. | | USER sollte dem Namen des Linux-User entsprechen. |
| + | |
| + | Ggf. muss man noch die Datei <code> /etc/postgresql/9.5/main/pg_hba.conf </code> so anpassen, dass auch eine Einwahl mit Passwort möglich ist. Dazu ist eine Zeile wie die folgende einzutragen: |
| + | local MYDB MYPOSTGRESUSER password |
| + | |
| + | Die Reihenfolge der Zeilen ist wichtig.<ref>Siehe https://www.postgresql.org/docs/current/auth-pg-hba-conf.html </ref>. Eine Zeile wie |
| + | local all all peer |
| + | sollte daher hinter anderen local-Anweisungen stehen, die spezifischere Authentifizierungsmethoden wie <code>md5</code> oder <code>password</code> kennen. |
| + | |
| + | In <code>$HOME/.pgpass</code> kann man zum Verzicht auf die Passworteingabe Zeilen nach dem folgenden Muster einfügen:<ref>https://www.postgresql.org/docs/11/static/libpq-pgpass.html</ref> |
| + | hostname:port:database:username:password |
| + | Beispiel |
| + | localhost:*:MYDB:MYPOSTGRESUSER:PASS |
| + | |
| + | Man MUSS den Zugriff auf .pgpass einschränken: |
| + | chmod 0600 ~/.pgpass |
| + | |
| + | === Postgres-Version === |
| + | |
| + | Um im <code>psql</code>-Client oder in anderen SQL-Verbindungen die Version des Servers auszugeben, verwendet man: |
| + | |
| + | SELECT version(); |
| + | |
| + | === Konfigurationsdatei === |
| + | |
| + | Um den Ort der Konfigurationsdateien des Postgres-Servers zu finden verwendet man |
| + | |
| + | sudo -u postgres psql |
| + | |
| + | und folgende Befehle<ref>Siehe https://www.postgresql.org/docs/current/runtime-config-file-locations.html</ref> |
| + | SHOW data_directory; |
| + | SHOW config_file; |
| + | SHOW hba_file; |
| + | |
| + | === Postgres on Android === |
| + | |
| + | PostgresSQL läuft auch auf Android. Dazu benötigt man die App Termux. Siehe |
| + | * https://stackoverflow.com/questions/33474468/can-i-use-postgresql-in-android-phone |
| | | |
| == Zeilenbasierte Zugriffsrechte == | | == Zeilenbasierte Zugriffsrechte == |
Zeile 26: |
Zeile 65: |
| * https://blog.2ndquadrant.com/application-users-vs-row-level-security/ | | * https://blog.2ndquadrant.com/application-users-vs-row-level-security/ |
| | | |
− | == REST-API mit Node.js und PostgreSQL == | + | == Node.js-Zugriff auf PostgreSQL == |
| + | === Node.js-Client-Bibliotheken für JavaScript und TypeScript === |
| + | |
| + | Siehe |
| + | * [[Softwareentwicklung#JavaScript for PostgreSQL]] |
| + | * [[TypeScript#TypeScript und PostgreSQL]] |
| + | |
| + | === REST-API mit Node.js und PostgreSQL === |
| Siehe | | Siehe |
| * [https://github.com/jorditost/node-postgres-restapi node-postgres-restapi] | | * [https://github.com/jorditost/node-postgres-restapi node-postgres-restapi] |
Zeile 32: |
Zeile 78: |
| * [https://node-postgres.com/guides/project-structure Projektstrukturvorschlag bei Nutzung von PostgreSQL mit Node.js] | | * [https://node-postgres.com/guides/project-structure Projektstrukturvorschlag bei Nutzung von PostgreSQL mit Node.js] |
| | | |
| + | == Fensterfunktionen in PostgresSQL == |
| + | |
| + | Mit sogenannten Fensterfunktionen oder Window Functions können sehr viele Operationen in der Datenbank abgebildet werden, die sonst der Client mit üblicherweise hohem Aufwand programmatisch durchführen musste. |
| + | |
| + | Siehe |
| + | * [https://wiki.postgresql.org/wiki/File:PostgreSQL_Window_Functions.pdf Window Functions um ein FIFO-System in der Datenbank zu erstellen] - ausführliche Anleitung |
| + | * [https://stackoverflow.com/questions/43831286/postgres-fifo-query-calculate-profit-margin Window Functions um ein FIFO-System in der Datenbank zu erstellen] - Stackoverflow-Code ohne Erläuterung; die dort genannte Lösung dürfte nicht sehr gut skalieren, weil - zumindest als Zwischenergebnis - jedes einzelne Stück angeschaut wird (für 10000 in vier Lieferungen heraus- und hereingenommene Stücke entstehen dadurch mindestens 10000 Datensätze). |
| + | |
| + | == Rest-API mit Postgres == |
| + | |
| + | Siehe |
| + | * https://postgrest.org/ basiert auf Haskell |
| + | * pREST - basiert auf Go |
| + | * [[Supabase]] |
| ------ | | ------ |
| <references/> | | <references/> |
| [[Category:Datenbank]] | | [[Category:Datenbank]] |
| [[Category:ServerSoftware]] | | [[Category:ServerSoftware]] |