Postgresql Postgres不保存特殊字符

Postgresql Postgres不保存特殊字符,postgresql,psql,Postgresql,Psql,我正在尝试使用以下psql命令重置所有用户的密码。命令执行成功,但密码值错误。密码是bcrypt字符串12345 psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = '$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'" 查询: select "PASSWORD" from "Users"; 返回: a.1/TNBPaeQam8dnV6tUOWw

我正在尝试使用以下psql命令重置所有用户的密码。命令执行成功,但密码值错误。密码是bcrypt字符串12345

psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = '$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"
查询:

select "PASSWORD" from "Users"; 
返回:

a.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW
而不是:

$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW 

据我所知,postgres将$作为占位符或特殊字符。我怎样才能摆脱它呢?

问题不在于postgres,而在于shell。它将美元符号解释为变量的开始。您应该使用反斜杠(
“\$2a\$10\$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW”
)对其进行转义:


宾果,非常感谢@macmoonshine,效果很好:)你很好。顺便说一句:pgcontrib的
pgcrypto
模块也为这种加密提供了存储功能。
psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = '\$2a\$10\$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"