¿Cómo instalo pgcrypto en PostgreSQL 8.4?
-
16-10-2019 - |
Pregunta
Estoy usando Ubuntu Server 10.10 y he instalado PostgreSQL 8.4 utilizando apt-get install postgresql
. Me gustaría utilizar la función integrada de sha1()
, pero parece que tengo que instalar primero pgcrypto
. Pero no sé cómo instalarlo.
No hay pgcrypto
si trato de instalarlo usando apt-get install pgcrypto
y no encuentro ningún archivo empezando por pgcrypto
en mi sistema (probé find / -name "pgcrypto*"
).
¿Cómo instalo pgcrypto para que pueda utilizar la función digest('word-to-hash','sha1')
en mis consultas de bases de datos?
Actualización: Estoy luchando para instalar pgcrypto en otra máquina Ubuntu. Después de instalar el paquete utilizando sudo apt-get install postgresql-contrib-8.4
cómo lo instalo a mi base de datos PostgreSQL actual?
Solución
Para más nueva versión de PG, echa un vistazo a la respuesta por debajo de Dustin Kirkland
Es un módulo externo de Postgres. Se debe instalar el postgresql-contrib-8.4
(o su versión PG) del paquete a través de apt:
apt-get install postgresql-contrib-8.4
A continuación se encuentra la instalación de SQL en algún archivo en la carpeta /usr/share/postgresql
, y usted tendrá que ejecutar pgcryto.sql
en la base de datos.
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
Otros consejos
PostgreSQL 9.1 +
Tenga en cuenta que estoy trabajando en Ubuntu 12.04, que utiliza PostgreSQL 9.1.
No, necesitaba:
sudo apt-get install postgresql-contrib
Y luego, en mi base de datos:
postgres@ztrustee:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION
Y ahora puedo usar pgcrypto funcionalidad, 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
En la última versión, no hay fin ruta del archivo con pgcrypto.sql.
Crea una pgcrypto extensión bajo el usuario requerido.
$ 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 en el caso, el usuario no tiene permiso para crear una extensión, dar el permiso de superusuario postgres está registrado como usuario (por defecto) e inténtelo de nuevo.
$ 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