Postgres 不保存特殊字符
Postgres not saving special characters
我正在尝试使用以下 psql 命令为所有用户重置密码。命令执行成功,但密码值错误。密码为12345
的bcrypt字符串
psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = 'a$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"
查询:
select "PASSWORD" from "Users";
returns:
a.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW
而不是:
a$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW
我的理解是 postgres 将 $ 作为占位符或特殊字符。我怎样才能逃脱它?
问题不在于 postgres,而在于 shell。它将美元符号解释为变量的开头。您应该使用反斜杠 ('$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'
):
来转义它们
psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = '$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"
我正在尝试使用以下 psql 命令为所有用户重置密码。命令执行成功,但密码值错误。密码为12345
的bcrypt字符串psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = 'a$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"
查询:
select "PASSWORD" from "Users";
returns:
a.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW
而不是:
a$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW
我的理解是 postgres 将 $ 作为占位符或特殊字符。我怎样才能逃脱它?
问题不在于 postgres,而在于 shell。它将美元符号解释为变量的开头。您应该使用反斜杠 ('$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'
):
psql -U myuser -d mydb -c "update \"Users\" set \"PASSWORD\" = '$2a$10$u0vd9noCisUUJME9k4daU.1/TNBPaeQam8dnV6tUOWwjn4kFT5XdW'"