Wie installiere ich PGCrypto in PostgreSQL 8.4?
-
16-10-2019 - |
Frage
Ich verwende Ubuntu Server 10.10 und habe PostgreSQL 8.4 verwendet apt-get install postgresql
. Ich möchte das eingebaute verwenden sha1()
Funktion, aber es scheint, dass ich installieren muss pgcrypto
Erste. Aber ich weiß nicht, wie ich es installieren soll.
Es gibt kein pgcrypto
Wenn ich versuche, es mithilfe zu installieren apt-get install pgcrypto
Und ich finde keine Dateien, die mit dem mit pgcrypto
in meinem System (ich habe es versucht find / -name "pgcrypto*"
).
Wie installiere ich PGCrypto, damit ich das verwenden kann digest('word-to-hash','sha1')
Funktion in meinen Datenbankabfragen?
Aktualisieren: Ich kämpfe darum, PGCrypto auf einem anderen Ubuntu -Computer zu installieren. Nach der Installation des Pakets mithilfe sudo apt-get install postgresql-contrib-8.4
Wie installiere ich es in meiner aktuellen PostgreSQL -Datenbank?
Lösung
Für eine neuere Version von PG finden Sie die folgende Antwort von Dustin Kirkland
Es ist ein externes Modul für Postgres. Sie sollten die installieren postgresql-contrib-8.4
(oder Ihre PG -Version) Paket über APT:
apt-get install postgresql-contrib-8.4
Dann finden Sie die SQL -Installationsdatei irgendwo in der /usr/share/postgresql
Ordner, und Sie müssen laufen pgcryto.sql
Auf der Datenbank.
psql -d <database> -f /usr/share/postgresql/8.4/contrib/pgcrypto.sql
Oder,
$ cd /usr/share/postgresql/8.4/contrib
$ psql -d <database>
psql (8.4.8)
Type "help" for help.
database=# \i pgcrypto.sql
Andere Tipps
PostgreSQL 9.1+
Beachten Sie, dass ich an Ubuntu 12.04 arbeite, das PostgreSQL 9.1 verwendet.
Dort musste ich:
sudo apt-get install postgresql-contrib
Und dann in meiner Datenbank:
postgres@ztrustee:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION
Und jetzt kann ich PGCrypto -Funktionalität verwenden, Gen_Random_Bytes ():
test=# create table test (
id
text
not null
default encode( gen_random_bytes( 32 ), 'hex' )
primary key,
value
text
);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test"
CREATE TABLE
test=# \d test
Table "public.test"
Column | Type | Modifiers
--------+------+------------------------------------------------------------
id | text | not null default encode(gen_random_bytes(32), 'hex'::text)
value | text |
Indexes:
"test_pkey" PRIMARY KEY, btree (id)
test=# insert into test (value) VALUES ('scoobydoo');
INSERT 0 1
test=# select * from test;
id | value
------------------------------------------------------------------+-----------
76dd5bd0120d3df797f932fbcb4f8aa5088e215ee2b920dddbff59c8595fbac7 | scoobydoo
Für die neueste Version gibt es mit PGCrypto.sql kein Dateipfadende.
Erstellen Sie eine Erweiterung PGCrypto unter dem erforderlichen Benutzer.
$ psql -U <username> -d mydb
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help.
mydb=> CREATE EXTENSION pgcrypto;
CREATE EXTENSION
mydb=>
Wenn der Benutzer für den Fall keine Berechtigung hat, eine Erweiterung zu erstellen, geben Sie Superuser die Berechtigung per Anmelden als Postgres -Benutzer (Standard) und versuchen Sie es erneut.
$ psql --u postgres
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help.
postgres=# ALTER USER <username> WITH SUPERUSER;
ALTER ROLE