因此,我尝试在 postgresql 中对一些密码进行哈希处理,而我发现的唯一针对 postgresql 的哈希解决方案是 pgcrytpo 包的一部分(http://www.postgresql.org/docs/8.3/static/pgcrypto.html) 应该位于 postgresql-contrib 中 (http://www.postgresql.org/docs/8.3/static/contrib.html)。
所以我安装了 postgresql-contrib(sudo apt-get install postgresql-contrib),重新启动了我的服务器(作为重新启动 postgresql 的简单方法)。
但是,我仍然无法访问 postgresql-contrib 中应该包含的任何散列函数,例如:
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
那么,在 ubuntu 上,如何在 postgresql 中对密码进行哈希处理?
答案1
这可能是一个提示,来自您上面列出的其中一个网页:
许多模块提供新的用户定义函数、运算符或类型。要使用其中一个模块,在安装代码后,您需要通过运行模块提供的 .sql 文件中的 SQL 命令在数据库系统中注册新对象。例如,
psql -d dbname -f SHAREDIR/contrib/module.sql
答案2
安装 postgresql-contrib 后,你需要CREATE EXTENSION pgcrypto;
针对想要使用加密函数的数据库运行
答案3
更加简单只需安装 pdAdmin,然后在您正在处理的数据库中右键单击数据库并添加新对象,选择扩展,然后选择 pgcrypto 作为名称,并将定义模式设置为公共,版本为 1.0,在我的 MAC OS 10.7.5 上使用 Postgres 9.2,效果非常好