Bagaimana cara menginstal pgcrypto di PostgreSQL 8.4?

23

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

Tidak ada pgcryptojika saya mencoba menginstalnya menggunakan apt-get install pgcryptodan saya tidak menemukan file yang dimulai dengan pgcryptosistem saya (saya mencoba find / -name "pgcrypto*").

Bagaimana cara menginstal pgcrypto sehingga saya dapat menggunakan digest('word-to-hash','sha1')fungsi ini dalam permintaan basis data saya?


Pembaruan: Saya kesulitan untuk menginstal pgcrypto di mesin Ubuntu lain. Setelah menginstal paket menggunakan sudo apt-get install postgresql-contrib-8.4bagaimana cara menginstalnya ke database PostgreSQL saya saat ini?

Jonas
sumber
Hi @Jonas, saya tidak yakin jika Anda mengalami masalah menginstal pgcrypto atau jika Anda mengalami masalah mendapatkan itu untuk bekerja dengan db Anda install. Sepertinya Anda memiliki masalah repo. Verifikasi file ini ada di jalur ini /usr/local/pgsql/share/contrib/pgcrypto.sqldan beri tahu kami.
jcolebrand
@ jcolebrand: Tidak, saya tidak memiliki /usr/local/pgsqldirektori. Satu-satunya tempat di mana saya memiliki *.sqlfile /usr/share/postgresql/8.4/tapi tidak ada yang berhubungan dengan crypto
Jonas

Jawaban:

17

Untuk 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 /usr/share/postgresqlfolder, dan Anda harus menjalankannya pgcryto.sqldi 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
DrColossos
sumber
Ketika saya menjalankan sudo apt-get install postgres-contribsaya mendapatkanE: Unable to locate package postgres-contrib
Jonas
Saya googled dan sekarang saya telah menginstalnya menggunakan sudo apt-get install postgresql-contrib-8.4dan kemudian menjalankan \i <path-to-pgcrypto>menggunakan psql.
Jonas
Itulah cara melakukannya. Saya sedikit memperbarui jawaban untuk memasukkan catatan pada versi untuk paket
DrColossos
1
Ah, perintahnya adalah\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas
9
Di bawah postgresql 9.1 Anda mengetikkan baris perintah: CREATE EXTENSION pgcrypto
Danubian Sailor
19

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:

postgres@ztrustee:~$ 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
Dustin Kirkland
sumber
Saya sangat suka jawaban ini, meskipun Anda harus menjawab sendiri pertanyaan untuk 9.1+ (ketika fitur ini ditambahkan) Karena OP dengan jelas meminta 8.4 dan versinya tidak mendukung CREATE EXTENSION (yang membuat jawaban yang lain benar-benar benar.
Evan Carroll
0

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 seandainya, pengguna tidak memiliki izin untuk membuat ekstensi, berikan izin superuser dengan login 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
Veeresh Digasangi
sumber