忘记了Odoo的Admin账户密码怎么办?

在Odoo 7.0及以前,用户密码在数据库里是明文保存的。(用户密码加密是通过加载第三方模块来实现的)

对于管理员把自己锁在门外这样的糗事,7.0及以前的版本是极易处理的,只要可以访问数据库,查询res_users表,执行下面的命令就可以知道密码,不仅是管理员,所有人的密码噢
 

select login, password from res_users;

 

Odoo V8后,系统默认对用户密码通过SHA-512的哈希算法进行了加密,并将加密后的hash值保存在res_users表的password_crypt字段中。虽然我们仍然能通过访问数据库获得这些hash值,但是因为hash算法的不可逆性,我们是无法反推出对应的用户密码的。

 

老办法不管用了,反推恢复密码不可行。但是,只要我们知道Odoo用的加密算法,我们就可以创建一个新密码并且覆盖旧的加密密码,可以用下面的python代码来创建一个新的加密密码,替换其中的'MY_PASSWORD'为你的用户密码:

from passlib.context import CryptContext
print CryptContext(['pbkdf2_sha512']).encrypt('MY_PASSWORD')

然后把上面代码所生成的用户密码的hash值用下面的SQL覆盖数据库中的已有加密密码即可:

UPDATE res_users SET password_crypt='your new password hash' WHERE id=1;

这样你就能用新密码登录了.