Come installo pgcrypto in PostgreSQL 8.4?


23

Sto usando Ubuntu Server 10.10 e ho installato PostgreSQL 8.4 usando apt-get install postgresql. Vorrei utilizzare la sha1()funzione integrata, ma sembra che debba pgcryptoprima installare . Ma non so come installarlo.

Non c'è pgcryptose provo a installarlo usando apt-get install pgcryptoe non trovo alcun file che inizi con pgcryptonel mio sistema (ho provato find / -name "pgcrypto*").

Come installo pgcrypto in modo da poter utilizzare la digest('word-to-hash','sha1')funzione nelle query del mio database?


Aggiornamento: faccio fatica a installare pgcrypto su un'altra macchina Ubuntu. Dopo aver installato il pacchetto usando sudo apt-get install postgresql-contrib-8.4come posso installarlo sul mio attuale database PostgreSQL?


Ciao @Jonas, non sono sicuro se stai riscontrando problemi con l'installazione di pgcrypto o se hai problemi a farlo funzionare con la tua installazione db. Sembra che tu abbia un problema di pronti contro termine. Verifica che questo file esista su questo percorso /usr/local/pgsql/share/contrib/pgcrypto.sqle facci sapere.
jcolebrand

@jcolebrand: No, non ho una /usr/local/pgsqldirectory. L'unico posto in cui ho i *.sqlfile sono /usr/share/postgresql/8.4/ma non sono correlati alla crittografia.
Jonas,

Risposte:


17

Per la versione più recente di PG, controlla la risposta di seguito da Dustin Kirkland

È un modulo esterno per Postgres. Dovresti installare il postgresql-contrib-8.4pacchetto (o la tua versione di pg) tramite apt:

apt-get install postgresql-contrib-8.4

Quindi trovi il file di installazione sql da qualche parte nella /usr/share/postgresqlcartella e dovrai eseguirlo pgcryto.sqlsul database.

psql -d <database> -f /usr/share/postgresql/8.4/contrib/pgcrypto.sql

O,

$ cd /usr/share/postgresql/8.4/contrib
$ psql -d <database>
    psql (8.4.8)
    Type "help" for help.

    database=# \i pgcrypto.sql

Quando corro sudo apt-get install postgres-contribottengoE: Unable to locate package postgres-contrib
Jonas il

Ho cercato su google e ora l'ho installato usando sudo apt-get install postgresql-contrib-8.4e poi eseguo \i <path-to-pgcrypto>usando psql.
Jonas

Questo è il modo di farlo. Ho leggermente aggiornato la risposta per includere la nota sulla versione del pacchetto
DrColossos

1
Ah, il comando era\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas,

9
Sotto postgresql 9.1 digiti la riga di comando: CREATE EXTENSION pgcrypto
Danubian Sailor

19

PostgreSQL 9.1+

Nota che sto lavorando su Ubuntu 12.04, che utilizza Postgresql 9.1.

Lì, dovevo:

sudo apt-get install postgresql-contrib

E poi nel mio database:

postgres@ztrustee:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION

E ora posso usare la funzionalità pgcrypto, 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

Mi piace molto questa risposta, anche se avresti dovuto rispondere autonomamente a una domanda per 9.1+ (quando è stata aggiunta questa funzione) Come l'OP ha chiaramente richiesto 8.4 e la sua versione non supporta CREATE EXTENSION (il che rende l'altra risposta strettamente corretta.
Evan Carroll il

0

Per l'ultima versione, non esiste un percorso di file che termina con pgcrypto.sql.

Creare un'estensione pgcrypto sotto l'utente richiesto.

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

Se, nel caso, l'utente non dispone dell'autorizzazione per creare un'estensione, concedere l'autorizzazione superutente accedendo come utente postgres (predefinito) e riprovare.

$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.