it-swarm.com.de

Wie installiere ich pgcrypto in PostgreSQL 8.4?

Ich verwende Ubuntu Server 10.10 und habe PostgreSQL 8.4 mit apt-get install postgresql Installiert. Ich möchte die eingebaute Funktion sha1() verwenden, aber anscheinend muss ich zuerst pgcrypto installieren. Aber ich weiß nicht, wie ich es installieren soll.

Es gibt kein pgcrypto, wenn ich versuche, es mit apt-get install pgcrypto Zu installieren, und ich finde keine Dateien, die mit pgcrypto beginnen, in meinem System (ich habe versucht find / -name "pgcrypto*" ).

Wie installiere ich pgcrypto, damit ich die Funktion digest('Word-to-hash','sha1') in meinen Datenbankabfragen verwenden kann?


pdate : Ich habe Probleme, pgcrypto auf einem anderen Ubuntu-Computer zu installieren. Wie installiere ich das Paket nach der Installation mit Sudo apt-get install postgresql-contrib-8.4 In meiner aktuellen PostgreSQL-Datenbank?

23
Jonas

Für eine neuere Version von PG lesen Sie die Antwort von Dustin Kirkland unten

Es ist ein externes Modul für Postgres. Sie sollten das Paket postgresql-contrib-8.4 (Oder Ihre pg-Version) über apt installieren:

apt-get install postgresql-contrib-8.4

Dann finden Sie die SQL-Installationsdatei irgendwo im Ordner /usr/share/postgresql, Und Sie müssen pgcryto.sql In der Datenbank ausführen.

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
18
DrColossos

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:

[email protected]:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION

Und jetzt kann ich die pgcrypto-Funktionalität gen_random_bytes () verwenden:

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
20
Dustin Kirkland

In der neuesten Version gibt es kein Dateipropfende mit pgcrypto.sql.

Erstellen Sie eine Erweiterung pgcrypto unter dem gewünschten 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 keine Berechtigung zum Erstellen einer Erweiterung hat, erteilen Sie dem Superuser die Berechtigung, indem Sie sich als Postgres-Benutzer (Standardbenutzer) anmelden und es erneut versuchen.

$ 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
1