Как установить pgcrypto в Postgresql 8.4?
-
16-10-2019 - |
Вопрос
Я использую Ubuntu Server 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 на другой машине Ubuntu. После установки пакета с помощью sudo apt-get install postgresql-contrib-8.4
Как установить его в свою текущую базу данных PostgreSQL?
Решение
Для более новой версии PG, проверьте ответ ниже Дастина Киркленда
Это внешний модуль для Postgres. Вы должны установить postgresql-contrib-8.4
(или ваша версия PG) пакет через APT:
apt-get install postgresql-contrib-8.4
Затем вы найдете файл установки SQL где -то в /usr/share/postgresql
папка, и вам нужно запустить 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
Другие советы
Postgresql 9.1+
Обратите внимание, что я работаю над Ubuntu 12.04, который использует PostgreSQL 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
Для последней версии нет конца файла с 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