Làm cách nào để cài đặt pgcrypto trong PostgreSQL 8.4?


23

Tôi đang sử dụng Ubuntu Server 10.10 và tôi đã cài đặt PostgreSQL 8.4 bằng cách sử dụng apt-get install postgresql. Tôi muốn sử dụng sha1()chức năng tích hợp, nhưng có vẻ như tôi phải cài đặt pgcryptotrước. Nhưng tôi không biết làm thế nào để cài đặt nó.

Không có gì pgcryptonếu tôi cố gắng cài đặt nó bằng cách sử dụng apt-get install pgcryptovà tôi không tìm thấy bất kỳ tệp nào bắt đầu pgcryptotrong hệ thống của mình (tôi đã thử find / -name "pgcrypto*").

Làm cách nào để cài đặt pgcrypto để tôi có thể sử dụng digest('word-to-hash','sha1')hàm trong các truy vấn cơ sở dữ liệu của mình?


Cập nhật: Tôi đang vật lộn để cài đặt pgcrypto trên một máy Ubuntu khác. Sau khi cài đặt gói bằng cách sử dụng, sudo apt-get install postgresql-contrib-8.4làm thế nào để tôi cài đặt nó vào cơ sở dữ liệu PostgreSQL hiện tại của tôi?


Xin chào @Jonas, tôi không chắc chắn nếu bạn gặp sự cố khi cài đặt pgcrypto hoặc nếu bạn gặp sự cố khiến nó hoạt động với cài đặt db của bạn. Có vẻ như bạn có một vấn đề repo. Xác nhận tệp này tồn tại trên đường dẫn này /usr/local/pgsql/share/contrib/pgcrypto.sqlvà cho chúng tôi biết.
jcolebrand

@jcolebrand: Không tôi không có /usr/local/pgsqlthư mục. Nơi duy nhất tôi có *.sqltệp nằm trong /usr/share/postgresql/8.4/nhưng không liên quan đến tiền điện tử.
Jonas

Câu trả lời:


17

Đối với phiên bản PG mới hơn, hãy xem câu trả lời dưới đây của Dustin Kirkland

Đây là một mô-đun bên ngoài cho Postgres. Bạn nên cài đặt gói postgresql-contrib-8.4(hoặc phiên bản pg của bạn) thông qua apt:

apt-get install postgresql-contrib-8.4

Sau đó, bạn tìm thấy tệp cài đặt sql ở đâu đó trong /usr/share/postgresqlthư mục và bạn sẽ cần chạy pgcryto.sqltrên cơ sở dữ liệu.

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

Hoặc là,

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

    database=# \i pgcrypto.sql

Khi tôi chạy, sudo apt-get install postgres-contribtôi nhận đượcE: Unable to locate package postgres-contrib
Jonas

Tôi đã googled và bây giờ tôi đã cài đặt nó bằng cách sử dụng sudo apt-get install postgresql-contrib-8.4và sau đó chạy \i <path-to-pgcrypto>bằng cách sử dụng psql.
Jonas

Đó là một cách làm việc đó. Tôi hơi cập nhật câu trả lời để bao gồm ghi chú trên phiên bản cho gói
DrColossos

1
À, lệnh là\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas

9
Trong postgresql 9.1, bạn nhập dòng lệnh: TẠO EXTENSION pgcrypto
Thủy thủ Danubian

19

PostgreQuery 9.1+

Lưu ý rằng tôi đang làm việc trên Ubuntu 12.04, sử dụng postgresql 9.1.

Ở đó, tôi cần phải:

sudo apt-get install postgresql-contrib

Và sau đó trong cơ sở dữ liệu của tôi:

postgres@ztrustee:~$ psql test
psql (9.1.3)
Type "help" for help.
test=# CREATE EXTENSION pgcrypto;
CREATE EXTENSION

Và bây giờ tôi có thể sử dụng chức năng 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

Tôi thực sự thích câu trả lời này, mặc dù bạn nên có tự trả lời một câu hỏi cho 9.1+ (khi tính năng này đã được bổ sung) Như OP hỏi rõ ràng cho 8.4 và phiên bản của mình không hỗ trợ CREATE EXTENSION (mà làm cho câu trả lời khác nói đúng chính xác.
Evan Carroll

0

Đối với phiên bản mới nhất, không có đường dẫn tệp kết thúc bằng pgcrypto.sql.

Tạo một pgcrypto mở rộng theo người dùng yêu cầu.

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

Nếu trong trường hợp, người dùng không có quyền tạo tiện ích mở rộng, hãy cấp quyền cho siêu người dùng bằng cách đăng nhập với tư cách người dùng postgres (mặc định) và thử lại.

$ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.