मैं PostgreSQL 8.4 में pgcrypto कैसे स्थापित करूं?


23

मैं Ubuntu सर्वर 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 स्थापित करने के लिए संघर्ष कर रहा हूँ। पैकेज का उपयोग करने के बाद sudo apt-get install postgresql-contrib-8.4मैं इसे अपने वर्तमान PostgreSQL डेटाबेस में कैसे स्थापित करूं?


हाय @ जोंस, मुझे यकीन नहीं है कि अगर आपको pgcrypto स्थापित करने में समस्या आ रही है या यदि आपके पास यह समस्या हो रही है तो इसे अपने bb इंस्टॉल के साथ काम करें। ऐसा लगता है कि आपके पास रेपो मुद्दा है। सत्यापित करें कि यह फ़ाइल इस पथ पर मौजूद है /usr/local/pgsql/share/contrib/pgcrypto.sqlऔर हमें बताएं।
jcolebrand

@jcolebrand: नहीं, मेरे पास कोई /usr/local/pgsqlनिर्देशिका नहीं है । एकमात्र जगह जहां मेरे पास *.sqlफ़ाइलें हैं, /usr/share/postgresql/8.4/लेकिन कोई क्रिप्टो-संबंधित नहीं है।
जोनास

जवाबों:


17

पीजी के नए संस्करण के लिए, डस्टिन किर्कलैंड द्वारा नीचे दिए गए उत्तर की जाँच करें

यह Postgres के लिए एक बाहरी मॉड्यूल है। आपको postgresql-contrib-8.4apt के माध्यम से (या अपना pg संस्करण) पैकेज स्थापित करना चाहिए :

apt-get install postgresql-contrib-8.4

तब आपको /usr/share/postgresqlफ़ोल्डर में कहीं न कहीं sql install फाइल मिल जाती है , और आपको 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

जब मैं दौड़ता sudo apt-get install postgres-contribहूं तो मुझे मिलता हैE: Unable to locate package postgres-contrib
जोनास

मैं googled और अब मैं का उपयोग कर इसे स्थापित किया है sudo apt-get install postgresql-contrib-8.4और फिर से चलाने \i <path-to-pgcrypto>का उपयोग कर psql
जोनास

इसे करने का यही तरीका है। मैंने पैकेज के लिए संस्करण पर नोट को शामिल करने के लिए उत्तर को थोड़ा अपडेट किया
DrColossos

1
आह, कमान थी\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
जोनास

9
Postgresql 9.1 के तहत आप कमांड लाइन में टाइप करते हैं: CREATE EXTENSION pgcrypto
Danubian Sailor

19

PostgreSQL 9.1+

ध्यान दें कि मैं Ubuntu 12.04 पर काम कर रहा हूं, जो कि पोस्टग्रैक्स्ल 9.1 का उपयोग करता है।

वहाँ, मुझे इसकी आवश्यकता थी:

sudo apt-get install postgresql-contrib

और फिर मेरे डेटाबेस में:

postgres@ztrustee:~$ 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

मैं वास्तव में इस जवाब को पसंद करता हूं, हालांकि आपको 9.1+ के लिए एक प्रश्न का स्व-उत्तर देना चाहिए था (जब इस सुविधा को जोड़ा गया था) जैसा कि ओपी ने स्पष्ट रूप से 8.4 के लिए पूछा था और उसका संस्करण समर्थन नहीं करता है CREATE EXTENSION (जो दूसरे उत्तर को सख्ती से सही बोलने वाला बनाता है।
इवान कैरोल

0

नवीनतम संस्करण के लिए, 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=> 

यदि मामले में, उपयोगकर्ता के पास एक्सटेंशन बनाने की अनुमति नहीं है, तो पोस्टग्रेज (डिफ़ॉल्ट) उपयोगकर्ता के रूप में लॉगिन करके सुपरयुसर अनुमति दें और पुनः प्रयास करें।

$ 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.