PostgreSQL 8.4에서 pgcrypto를 어떻게 설치합니까?


23

Ubuntu Server 10.10을 사용하고 있으며를 사용하여 PostgreSQL 8.4를 설치했습니다 apt-get install postgresql. 내장 sha1()기능 을 사용하고 싶지만 pgcrypto먼저 설치해야 합니다. 그러나 나는 그것을 설치하는 방법을 모른다.

어떤이 pgcrypto내가 사용하여 설치하려고하면 apt-get install pgcrypto내가 모든 파일로 시작 찾을 수없는 pgcrypto내 시스템에서 (나는 시도하지 find / -name "pgcrypto*").

digest('word-to-hash','sha1')데이터베이스 쿼리에서 함수를 사용할 수 있도록 pgcrypto를 어떻게 설치 합니까?


업데이트 : 다른 우분투 컴퓨터에 pgcrypto를 설치하는 데 어려움을 겪고 있습니다. sudo apt-get install postgresql-contrib-8.4현재 PostgreSQL 데이터베이스에 패키지를 설치하는 방법을 사용하여 패키지를 설치 한 후


안녕하세요 @Jonas, pgcrypto 설치에 문제가 있는지 또는 DB 설치와 관련하여 문제가 있는지 확실하지 않습니다. repo 문제가있는 것 같습니다. 이 파일이이 경로에 있는지 확인 /usr/local/pgsql/share/contrib/pgcrypto.sql하고 알려주십시오.
jcolebrand

@jcolebrand : 아니요 /usr/local/pgsql디렉토리 가 없습니다 . *.sql파일이있는 유일한 곳 은 /usr/share/postgresql/8.4/암호 관련이 없습니다.
Jonas

답변:


17

최신 버전의 PG는 Dustin Kirkland의 답변을 확인하십시오.

Postgres의 외부 모듈입니다. postgresql-contrib-8.4apt를 통해 (또는 pg 버전) 패키지를 설치해야합니다 .

apt-get install postgresql-contrib-8.4

그런 다음 /usr/share/postgresql폴더의 어딘가에 sql 설치 파일이 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
조나스

나는 구글을 사용하여 이제 그것을 사용하여 설치 sudo apt-get install postgresql-contrib-8.4한 다음을 \i <path-to-pgcrypto>사용하여 실행했다 psql.
Jonas

그렇게하는 방법입니다. 패키지 버전에 대한 메모를 포함하도록 답변을 약간 업데이트했습니다.
DrColossos

1
아, 명령은\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
Jonas

9
postgresql 9.1에서는 다음과 같이 명령 행에 입력하십시오. CREATE EXTENSION pgcrypto
Danubian Sailor

19

PostgreSQL 9.1+

postgresql 9.1을 사용하는 Ubuntu 12.04에서 작업하고 있습니다.

거기서 나는 다음을 필요로했다.

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

확장명을 만들 권한이없는 경우에는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.