it-swarm.asia

كيف أقوم بتثبيت pgcrypto في PostgreSQL 8.4؟

أنا أستخدم Ubuntu Server 10.10 وقمت بتثبيت PostgreSQL 8.4 باستخدام apt-get install postgresql. أود استخدام الدالة sha1() المضمنة ، ولكن يبدو أنه يجب علي تثبيت pgcrypto أولاً. لكني لا أعرف كيفية تثبيته.

لا يوجد pgcrypto إذا حاولت تثبيته باستخدام apt-get install pgcrypto ولم أجد أي ملفات تبدأ بـ pgcrypto في نظامي (حاولت find / -name "pgcrypto*" ).

كيف أقوم بتثبيت pgcrypto حتى أتمكن من استخدام الوظيفة digest('Word-to-hash','sha1') في استعلامات قاعدة البيانات الخاصة بي؟


تحديث: أنا أكافح لتثبيت pgcrypto على جهاز Ubuntu آخر. بعد تثبيت الحزمة باستخدام Sudo apt-get install postgresql-contrib-8.4 كيف أقوم بتثبيتها على قاعدة بيانات PostgreSQL الحالية؟

23
Jonas

للحصول على إصدار أحدث من PG ، تحقق من الإجابة أدناه بواسطة Dustin Kirkland

إنها وحدة خارجية لـ Postgres. يجب تثبيت postgresql-contrib-8.4 (أو نسخة خريجك) عبر apt:

apt-get install postgresql-contrib-8.4

ثم تجد ملف التثبيت sql في مكان ما في /usr/share/postgresql المجلد ، وستحتاج إلى تشغيل pgcryto.sql على قاعدة البيانات.

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

أو،

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

لاحظ أنني أعمل على Ubuntu 12.04 ، والذي يستخدم postgresql 9.1.

هناك ، كنت بحاجة إلى:

Sudo apt-get install postgresql-contrib

ثم في قاعدة البيانات الخاصة بي:

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

والآن يمكنني استخدام وظيفة 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

بالنسبة لأحدث إصدار ، لا توجد نهاية مسار ملف بـ pgcrypto.sql.

قم بإنشاء ملحق pgcrypto تحت المستخدم المطلوب.

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

إذا كان الأمر كذلك ، فليس لدى المستخدم إذن لإنشاء ملحق ، ومنح إذن المستخدم المتميز بتسجيل الدخول كمستخدم postgres (افتراضي) وحاول مرة أخرى.

$ 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
Veeresh Digasangi