PostgreSQL 8.4'te pgcrypto'yu nasıl kurarım?


23

Ubuntu Server 10.10 kullanıyorum ve PostgreSQL 8.4'ü kullanarak kurdum apt-get install postgresql. Yerleşik sha1()işlevi kullanmak istiyorum , ancak pgcryptoilk önce yüklemem gerekecek gibi görünüyor . Ama nasıl kurulur bilmiyorum.

Hiçbir yoktur pgcryptoben kullanarak yüklemeye çalıştığınızda apt-get install pgcryptove herhangi dosyaları ile başlayan bulmuyorum pgcryptobenim sistemde (denedim find / -name "pgcrypto*").

Pgcrypto'yu nasıl kurarım, böylece digest('word-to-hash','sha1')işlevi veritabanı sorgularımda kullanabilirim?


Güncelleme: Başka bir Ubuntu makinesine pgcrypto yüklemek için mücadele ediyorum. Paketi kurduktan sonra sudo apt-get install postgresql-contrib-8.4mevcut PostgreSQL veritabanıma nasıl kurarım?


Merhaba @Jonas, pgcrypto'yu kurarken sorun yaşıyorsanız veya db kurulumunuzla çalışmasını sağlamakta sorun yaşıyorsanız emin değilim. Repo sorununuz var gibi gözüküyor. Bu dosyanın bu yolda bulunduğunu doğrulayın /usr/local/pgsql/share/contrib/pgcrypto.sqlve bize bildirin.
jcolebrand

@jcolebrand: Hayır Bir rehberim yok /usr/local/pgsql. *.sqlDosyalarımın bulunduğu /usr/share/postgresql/8.4/ancak şifrelemeyle ilgili olmayan tek yer .
Jonas

Yanıtlar:


17

PG'nin yeni versiyonu için aşağıdaki cevabı göz atın Dustin Kirkland

Postgres için harici bir modül. postgresql-contrib-8.4(Veya pg sürümünüz) paketini apt ile yüklemelisiniz :

apt-get install postgresql-contrib-8.4

Ardından sql kurulum dosyasını /usr/share/postgresqlklasörün herhangi bir yerinde bulursunuz ve veritabanında çalıştırmanız gerekir pgcryto.sql.

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

Veya,

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

    database=# \i pgcrypto.sql

Ben çalıştırdığınızda sudo apt-get install postgres-contribalıyorumE: Unable to locate package postgres-contrib
Jonas

Ben googled ve şimdi kullanarak yüklemiş sudo apt-get install postgresql-contrib-8.4ve sonra çalıştırın \i <path-to-pgcrypto>kullanarak psql.
Jonas

Bunu yapmanın yolu. Paketi sürümüne not eklemek için cevabı biraz güncelledim
DrColossos

1
Ah, emir\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas

9
Postgresql 9.1 altında komut satırına yazıyorsunuz: CREATE EXTENSION pgcrypto
Danubian Sailor

19

PostgreSQL 9.1+

Postgresql 9.1 kullanan Ubuntu 12.04 üzerinde çalıştığımı unutmayın.

Orada, ihtiyacım vardı:

sudo apt-get install postgresql-contrib

Ve sonra veritabanımda:

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

Ve şimdi pgcrypto işlevini kullanabilirim, 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

Bu cevabı gerçekten seviyorum, ancak 9.1+ için bir soruyu kendiniz cevaplamış olsanız da (bu özellik eklendiğinde) OP'nin 8.4 için açıkça sorduğu ve onun versiyonunun desteklemediği gibi CREATE EXTENSION (diğer cevabı kesinlikle doğru konuşur.)
Evan Carroll

0

En son sürüm için, pgcrypto.sql ile biten hiçbir dosya yolu yoktur.

Gerekli kullanıcının altında bir pgcrypto uzantısı oluşturun.

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

Durumda, kullanıcının bir uzantı oluşturma iznine sahip değilse, kullanıcılara (varsayılan) kullanıcı girişi yaparak süper kullanıcı izni verin ve tekrar deneyin.

$ 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.