6

So I'm trying to just hash some passwords in postgresql, and the only hashing solution that I've found for postgresql is part of the pgcrytpo package ( http://www.postgresql.org/docs/8.3/static/pgcrypto.html ) that is supposed to be in postgresql-contrib ( http://www.postgresql.org/docs/8.3/static/contrib.html ).

So I installed postgresql-contrib, (sudo apt-get install postgresql-contrib), restarted my server (as a simple way to restart postgresql).

However, I still don't have access to any of the functions for hashing that are supposed to be in postgresql-contrib, e.g.:

ninjawars=# select crypt('global salt' || 'new password' || 'user created date', gen_salt('sha256'));
ERROR:  function gen_salt(unknown) does not exist

ninjawars=# select digest('test', 'sha256') from players limit 1;
ERROR:  function digest(unknown, unknown) does not exist

ninjawars=# select hmac('test', 'sha256') from players limit 1;
ERROR:  function hmac(unknown, unknown) does not exist

So how can I hash passwords in postgresql, on ubuntu?

3 Answers 3

5

This may be a hint, from one of the web pages you listed above:

Many modules supply new user-defined functions, operators, or types. To make use of one of these modules, after you have installed the code you need to register the new objects in the database system by running the SQL commands in the .sql file supplied by the module. For example,

psql -d dbname -f SHAREDIR/contrib/module.sql
1
  • 1
    Gracias, that does explain it.
    – Kzqai
    Commented Apr 15, 2010 at 21:27
4

After you install postgresql-contrib you need to run CREATE EXTENSION pgcrypto; against the db where you want to use the crypto functions

2
  • 1
    Although pgcrypto looks like already installed, it needs to be installed again. Strange. But it helped me, 10x. Commented Mar 2, 2015 at 12:50
  • 1
    yes, it has to be enabled for each db you want to use it on
    – Anentropic
    Commented Mar 3, 2015 at 13:49
2

Much easier Just install pdAdmin and from the database you are working on right click on the database and ADD NEW OBJECT select Extension then select pgcrypto for name and set the definition schema to public and version 1.0 WORKED AS A CHARM FOR ME ON MY MAC OS 10.7.5 using Postgres 9.2

1
  • Yeah, they seem to have updated the system to make extensions easier to manage, happily, and now after installing postgresql-contrib in postgres 9.1 and up you can just: create extension pgcrypto or from the command line echo "create extension pgcrypto" | psql -d dataBaseName to enable extensions, as well.
    – Kzqai
    Commented Nov 13, 2012 at 20:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .