Question

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

Il n'y a pas pgcrypto si j'essaie de l'installer à l'aide apt-get install pgcrypto et je ne trouve pas les fichiers commençant par pgcrypto dans mon système (j'ai essayé find / -name "pgcrypto*").

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


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

Était-ce utile?

La solution

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

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

apt-get install postgresql-contrib-8.4

Ensuite, vous trouverez l'installation SQL quelque part de fichier dans le dossier /usr/share/postgresql, et vous aurez besoin d'exécuter pgcryto.sql sur 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

Autres conseils

PostgreSQL 9.1 +

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

, 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 pgcrypto fonctionnalité, 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

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

Créer un pgcrypto d'extension 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, donner la permission de connexion superuser comme postgres (par défaut) utilisateur et essayez à nouveau.

$ 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top