Postgres没有保存特殊字符

时间:2017-10-27 06:25:56

标签: postgresql psql

我正在尝试使用以下psql命令重置所有用户的密码。命令执行成功但密码值错误。密码是bcrypt string of 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将$视为占位符或特殊字符。我怎么能逃脱呢?

1 个答案:

答案 0 :(得分:3)

问题不在于postgres,而在于shell。它将美元符号解释为变量的开头。你应该用反斜杠('\$2a\$10\$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW')来逃避它们:

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