it-swarm-eu.dev

Jak nainstalovat pgcrypto v PostgreSQL 8.4?

Používám Ubuntu Server 10.10 a nainstaloval jsem PostgreSQL 8.4 pomocí apt-get install postgresql. Chtěl bych použít vestavěnou funkci sha1(), ale zdá se, že musím nejprve nainstalovat pgcrypto. Ale nevím, jak to nainstalovat.

Neexistuje žádné pgcrypto, pokud se pokusím nainstalovat pomocí apt-get install pgcrypto A nenajdu žádné soubory začínající pgcrypto v mém systému (zkusil jsem find / -name "pgcrypto*" ).

Jak mohu nainstalovat pgcrypto, abych mohl používat funkci digest('Word-to-hash','sha1') ve svých databázových dotazech?


Aktualizace: Snažím se nainstalovat pgcrypto na jiný stroj Ubuntu. Jak nainstalovat balíček pomocí Sudo apt-get install postgresql-contrib-8.4, Jak jej nainstalovat do své současné databáze PostgreSQL?

23
Jonas

Pro novější verzi PG, podívejte se na odpověď níže Dustin Kirkland

Je to externí modul pro Postgres. Měli byste nainstalovat postgresql-contrib-8.4 (nebo vaše pg verze) balíček přes apt:

apt-get install postgresql-contrib-8.4

Pak najdete instalační soubor sql někde v /usr/share/postgresqlsložka a budete muset spustit pgcryto.sql v databázi.

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

Nebo,

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

    database=# \i pgcrypto.sql
18
DrColossos

PostgreSQL 9.1+

Upozorňujeme, že pracuji na Ubuntu 12.04, který používá postgresql 9.1.

Tam jsem potřeboval:

Sudo apt-get install postgresql-contrib

A pak v mé databázi:

[email protected]:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION

A nyní mohu použít funkci 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
20
Dustin Kirkland

Pro nejnovější verzi neexistuje pgcrypto.sql konec cesty k souboru.

Vytvořte rozšíření pgcrypto pod požadovaným uživatelem.

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

V případě, že uživatel nemá oprávnění k vytvoření rozšíření, udělte uživateli superpoužívatelského oprávnění přihlášení jako postgres (výchozí) uživatel a zkuste to znovu.

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