it-swarm.asia

Bagaimana cara menginstal pgcrypto di PostgreSQL 8.4?

Saya menggunakan Ubuntu Server 10.10 dan saya telah menginstal PostgreSQL 8.4 menggunakan apt-get install postgresql. Saya ingin menggunakan fungsi sha1() bawaan, tetapi sepertinya saya harus menginstal pgcrypto terlebih dahulu. Tapi saya tidak tahu cara menginstalnya.

Tidak ada pgcrypto jika saya mencoba menginstalnya menggunakan apt-get install pgcrypto Dan saya tidak menemukan file yang dimulai dengan pgcrypto di sistem saya (saya mencoba find / -name "pgcrypto*" ).

Bagaimana cara saya menginstal pgcrypto sehingga saya dapat menggunakan fungsi digest('Word-to-hash','sha1') dalam query database saya?


Perbarui: Saya berjuang untuk menginstal pgcrypto di mesin Ubuntu lain. Setelah menginstal paket menggunakan Sudo apt-get install postgresql-contrib-8.4 Bagaimana cara menginstalnya ke database PostgreSQL saya saat ini?

23
Jonas

ntuk versi PG yang lebih baru, lihat jawaban di bawah ini oleh Dustin Kirkland

Ini adalah modul eksternal untuk Postgres. Anda harus menginstal paket postgresql-contrib-8.4 (Atau versi pg Anda) melalui apt:

apt-get install postgresql-contrib-8.4

Kemudian Anda menemukan file instal sql di suatu tempat di folder /usr/share/postgresql, Dan Anda harus menjalankan pgcryto.sql Pada database.

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

Atau,

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

Perhatikan bahwa saya sedang bekerja di Ubuntu 12.04, yang menggunakan postgresql 9.1.

Di sana, saya perlu:

Sudo apt-get install postgresql-contrib

Dan kemudian di basis data saya:

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

Dan sekarang saya dapat menggunakan fungsionalitas 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

Untuk versi terbaru, tidak ada akhir jalur file dengan pgcrypto.sql.

Buat pgcrypto ekstensi di bawah pengguna yang diperlukan.

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

Jika dalam kasus ini, pengguna tidak memiliki izin untuk membuat ekstensi, beri izin pengguna super dengan masuk sebagai pengguna postgres (default) dan coba lagi.

$ 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