PostgreSQL 8.4にpgcryptoをインストールするにはどうすればよいですか?


23

Ubuntu Server 10.10を使用しています。PostgreSQL8.4をインストールしましたapt-get install postgresql。組み込みsha1()関数を使用したいのですが、pgcrypto最初にインストールする必要があるようです。しかし、私はそれをインストールする方法を知りません。

何もありませんpgcrypto、私は使用してそれをインストールしようとした場合apt-get install pgcrypto、私はで始まるすべてのファイルを見つけることができませんpgcrypto(私が試した私のシステムではfind / -name "pgcrypto*")。

digest('word-to-hash','sha1')データベースクエリで関数を使用できるようにpgcryptoをインストールするにはどうすればよいですか?


更新: pgcryptoを別のUbuntuマシンにインストールするのに苦労しています。使用してパッケージをインストールした後sudo apt-get install postgresql-contrib-8.4、私は私の現在のPostgreSQLデータベースにそれをインストールするにはどうすればよいの?


こんにちは@ Jonas、pgcryptoのインストールに問題があるのか​​、dbインストールで動作させるのに問題があるのか​​わかりません。リポジトリに問題があるようです。このファイルがこのパスに存在することを確認し/usr/local/pgsql/share/contrib/pgcrypto.sql、お知らせください。
jcolebrand

@jcolebrand:いいえ、/usr/local/pgsqlディレクトリはありません。私が*.sqlファイルを持っている唯一の場所は/usr/share/postgresql/8.4/暗号関連ではありません。
ジョナス

回答:


17

PGの新しいバージョンについては、ダスティンカークランドによる以下の回答をご覧ください

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
ジョナス

それがそれをする方法です。パッケージのバージョンに関するメモを含めるように回答を少し更新しました
-DrColossos

1
ああ、コマンドは\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
ジョナス

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+のための自己回答質問を持っている必要がありかかわらず、OP明確に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.