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ée, mais il semble que je doive d'abord installer pgcrypto
. Mais je ne sais pas comment l'installer.
Il n'y a pas de pgcrypto
si j'essaie de l'installer en utilisant apt-get install pgcrypto
Et je ne trouve aucun fichier commençant par pgcrypto
dans mon système (j'ai essayé find / -name "pgcrypto*"
).
Comment installer pgcrypto pour pouvoir utiliser la fonction digest('Word-to-hash','sha1')
dans mes requêtes de base de données?
pdate: J'ai du mal à installer pgcrypto sur une autre machine Ubuntu. Après avoir installé le package à l'aide de Sudo apt-get install postgresql-contrib-8.4
, Comment l'installer dans ma base de données PostgreSQL actuelle?
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.4
(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/postgresql
dossier, et vous devrez 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
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
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 au 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