Estou usando o Ubuntu Server 10.10 e instalei o PostgreSQL 8.4 usando apt-get install postgresql
. Gostaria de usar a sha1()
função interna, mas parece que tenho que instalar pgcrypto
primeiro. Mas não sei como instalá-lo.
Não há pgcrypto
se eu tentar instalá-lo usando apt-get install pgcrypto
e não encontrar nenhum arquivo começando pgcrypto
no meu sistema (tentei find / -name "pgcrypto*"
).
Como instalo o pgcrypto para que eu possa usar a digest('word-to-hash','sha1')
função nas minhas consultas ao banco de dados?
Atualização: Estou com dificuldades para instalar o pgcrypto em outra máquina Ubuntu. Após instalar o pacote usando sudo apt-get install postgresql-contrib-8.4
como instalá-lo no meu banco de dados PostgreSQL atual?
/usr/local/pgsql/share/contrib/pgcrypto.sql
e informe-nos./usr/local/pgsql
diretório. O único lugar em que tenho*.sql
arquivos está,/usr/share/postgresql/8.4/
mas não relacionado a criptografia.Respostas:
Para a versão mais recente do PG, confira a resposta abaixo por Dustin Kirkland
É um módulo externo para o Postgres. Você deve instalar o
postgresql-contrib-8.4
pacote (ou sua versão pg) via apt:Em seguida, você encontra o arquivo de instalação sql em algum lugar da
/usr/share/postgresql
pasta e precisará executarpgcryto.sql
no banco de dados.Ou,
fonte
sudo apt-get install postgres-contrib
eu receboE: Unable to locate package postgres-contrib
sudo apt-get install postgresql-contrib-8.4
e executei\i <path-to-pgcrypto>
usandopsql
.\i /usr/share/postgresql/8.4/contrib/pgcypto.sql
PostgreSQL 9.1+
Note que estou trabalhando no Ubuntu 12.04, que usa o postgresql 9.1.
Lá, eu precisava:
E então no meu banco de dados:
E agora eu posso usar a funcionalidade pgcrypto, gen_random_bytes ():
fonte
CREATE EXTENSION
(o que torna a outra resposta estritamente corretaPara a versão mais recente, não há final do caminho do arquivo com pgcrypto.sql.
Crie uma extensão pgcrypto sob o usuário necessário.
Se for o caso, o usuário não tem permissão para criar uma extensão, conceda permissão ao superusuário fazendo login como usuário do postgres (padrão) e tente novamente.
fonte