it-swarm.com.de

Muss ich jedes Mal "create extension pgcrypto" ausführen?

Ich habe crypt() in einer meiner Funktionen verwendet, um das Benutzerkennwort zu hashen. Aber was ich am nächsten Tag beobachtete, als ich meinen PC startete, war, dass dasselbe fehlschlug, da kryptografische Funktionen beim Neustart nicht mehr verfügbar waren. Es zeigte nachrichtenähnliche Funktionen gen_salt()/crypt() ist unbekannt oder nicht definiert. Ich habe create extension pgcrypto; einmal und es fing an zu arbeiten.

Wie gehe ich damit in der Produktumgebung um? Gibt es eine Möglichkeit, dieses Modul in db dauerhaft verfügbar zu machen, selbst wenn db neu gestartet wird?

Oder muss ich den Server-Manager anweisen, diesen Befehl auszuführen, falls der DB-Server neu gestartet werden muss?

Oder can Ich schreibe diese Anweisung in Funktionen selbst, damit sie jedes Mal die Erweiterung erstellt, bevor kryptografische Funktionen verwendet werden?

Darüber hinaus verwenden wir eine Lesereplik von db, bei der diese Anweisung "create extension" nicht ausgeführt werden konnte, da nur Leseberechtigungen vorliegen. Wie können diese kryptografischen Funktionen in einer solchen schreibgeschützten Umgebung verfügbar gemacht werden?

3
Arjun_TECH

pgcrypto ist eine reguläre Postgres-Erweiterung. Sie müssen es installieren einmal pro Datenbank (nicht pro DB-Cluster, wie Sie vielleicht angenommen haben), um es zu verwenden. Die Installation ist permanent, überlebende DB-Neustarts.

Wenn Sie möchten, dass jede neu Datenbank im selben DB-Cluster vorinstalliert ist, können Sie sie in der Standardvorlagendatenbank installieren template1 indem Sie eine Verbindung herstellen und es normal installieren. Oder Installiere es in einer anderen Datenbank und verwende das als Vorlage mit:

CREATE DATABASE new_db TEMPLATE my_template;

Sehen:

Eine andere Sache, die schief gehen kann: die search_path. Sehen:

Wenn dies jedoch Ihr Problem war, erhalten Sie Warnungen, wenn Sie versuchen, dieselbe Erweiterung ein zweites Mal zu installieren.

Die einzige andere exotische Erklärung, die mir einfällt: Ihre Datenbank wurde möglicherweise in einem früheren Zustand wiederhergestellt. Aber davon würden Sie sicherlich wissen, nicht wahr?

Oder haben Sie versehentlich eine Verbindung zu einer anderen Datenbank hergestellt? Die von Ihnen erwähnte "Lesereplik"?

wie können diese kryptografischen Funktionen in einer solchen schreibgeschützten Umgebung verfügbar gemacht werden?

Wenn es nicht von Ihrer Replikationslösung repliziert wird, müssen Sie es manuell installieren einmal.

5