Comment installer pgcrypto dans PostgreSQL 8.4?


23

J'utilise Ubuntu Server 10.10 et j'ai installé PostgreSQL 8.4 avec apt-get install postgresql. Je voudrais utiliser la sha1()fonction intégrée, mais il semble que je dois d' pgcryptoabord installer . Mais je ne sais pas comment l'installer.

Il n'y en a pas pgcryptosi j'essaie de l'installer en utilisant apt-get install pgcryptoet que je ne trouve aucun fichier commençant par pgcryptodans mon système (j'ai essayé find / -name "pgcrypto*").

Comment installer pgcrypto pour pouvoir utiliser la digest('word-to-hash','sha1')fonction dans mes requêtes de base de données?


Mise à jour: j'ai du mal à installer pgcrypto sur une autre machine Ubuntu. Après avoir installé le package en utilisant sudo apt-get install postgresql-contrib-8.4comment l'installer dans ma base de données PostgreSQL actuelle?


Bonjour @Jonas, je ne sais pas si vous rencontrez des problèmes lors de l'installation de pgcrypto ou si vous rencontrez des problèmes pour le faire fonctionner avec votre installation db. Il semble que vous ayez un problème de mise en pension. Vérifiez que ce fichier existe sur ce chemin /usr/local/pgsql/share/contrib/pgcrypto.sqlet faites-le nous savoir.
jcolebrand

@jcolebrand: Non, je n'ai pas de /usr/local/pgsqlrépertoire. Le seul endroit où j'ai des *.sqlfichiers est /usr/share/postgresql/8.4/mais pas lié à la cryptographie.
Jonas

Réponses:


17

Pour une version plus récente de PG, consultez la réponse ci-dessous par Dustin Kirkland

C'est un module externe pour Postgres. Vous devez installer le postgresql-contrib-8.4package (ou votre version pg) via apt:

apt-get install postgresql-contrib-8.4

Ensuite, vous trouverez le fichier d'installation sql quelque part dans le /usr/share/postgresqldossier et vous devrez exécuter pgcryto.sqlsur la base de données.

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

Ou,

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

    database=# \i pgcrypto.sql

Quand je cours, sudo apt-get install postgres-contribje reçoisE: Unable to locate package postgres-contrib
Jonas

J'ai googlé et maintenant je l'ai installé en utilisant sudo apt-get install postgresql-contrib-8.4puis en exécutant en \i <path-to-pgcrypto>utilisant psql.
Jonas

C'est la façon de le faire. J'ai légèrement mis à jour la réponse pour inclure la note sur la version du package
DrColossos

1
Ah, l'ordre était\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas

9
Sous postgresql 9.1, vous tapez en ligne de commande: CREATE EXTENSION pgcrypto
Danubian Sailor

19

PostgreSQL 9.1+

Notez que je travaille sur Ubuntu 12.04, qui utilise postgresql 9.1.

Là, je devais:

sudo apt-get install postgresql-contrib

Et puis dans ma base de données:

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

Et maintenant, je peux utiliser la fonctionnalité 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

J'aime vraiment cette réponse, bien que vous auriez dû répondre par vous-même à une question pour 9.1+ (lorsque cette fonctionnalité a été ajoutée), car l'OP a clairement demandé 8.4 et sa version ne prend pas en charge CREATE EXTENSION (ce qui rend l'autre réponse à proprement parler correcte.
Evan Carroll

0

Pour la dernière version, il n'y a pas de fin de chemin de fichier avec pgcrypto.sql.

Créez une extension pgcrypto sous l'utilisateur requis.

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

Si dans le cas, l'utilisateur n'a pas l'autorisation de créer une extension, accordez l'autorisation de superutilisateur en vous connectant en tant qu'utilisateur postgres (par défaut) et réessayez.

$ 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.