如何在 PostgreSQL 8.4 中安装 pgcrypto?

Jon*_*nas 23 postgresql pgcrypto installation postgresql-8.4

我正在使用 Ubuntu Server 10.10 并且我已经使用apt-get install postgresql. 我想使用内置sha1()功能,但似乎必须先安装pgcrypto。但我不知道如何安装它。

没有pgcrypto,如果我尝试使用安装它apt-get install pgcrypto,我不找到以任何文件pgcrypto在我的系统(我想find / -name "pgcrypto*")。

如何安装 pgcrypto 以便我可以digest('word-to-hash','sha1')在我的数据库查询中使用该函数?


更新:我正在努力在另一台 Ubuntu 机器上安装 pgcrypto。使用sudo apt-get install postgresql-contrib-8.4如何将软件包安装到我当前的 PostgreSQL 数据库后安装软件包?

小智 20

PostgreSQL 9.1+

请注意,我正在使用 Ubuntu 12.04,它使用 postgresql 9.1。

在那里,我需要:

sudo apt-get install postgresql-contrib
Run Code Online (Sandbox Code Playgroud)

然后在我的数据库中:

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

现在我可以使用 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
Run Code Online (Sandbox Code Playgroud)


DrC*_*sos 18

对于较新版本的 PG,请查看 Dustin Kirkland 的以下答案

它是 Postgres 的外部模块。您应该postgresql-contrib-8.4通过 apt安装(或您的 pg 版本)包:

apt-get install postgresql-contrib-8.4
Run Code Online (Sandbox Code Playgroud)

然后你在/usr/share/postgresql文件夹中的某处找到sql安装文件,你需要pgcryto.sql在数据库上运行。

psql -d <database> -f /usr/share/postgresql/8.4/contrib/pgcrypto.sql
Run Code Online (Sandbox Code Playgroud)

或者,

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

    database=# \i pgcrypto.sql
Run Code Online (Sandbox Code Playgroud)

  • 在 postgresql 9.1 下你输入命令行:CREATE EXTENSION pgcrypto (9认同)