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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top