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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top