mysql命令行sql执行神秘,只考虑部分字符串
mysql command line sql execution mystery, only part of the string is considered
来自我的 Mac 终端的命令行:
mysql --host=127.0.0.1 --port=3306 -uroot -p"mypass" wordpress -e "update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';"
成功完成...
然而....只有 .L2vsQdD3MxvxAuDFKp0
被写入每一行的 user_pass 字段。威士忌探戈狐步舞?
不用说,当我从像 DataGrip 这样的应用程序直接向数据库发出 update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';
时,它会正确地获取整个字符串....
$
是 shell 变量的一部分,无意中被替换了。您必须转义 $
字符才能将其作为文字 $
.
保留在字符串中
$ echo "$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
.L2vsQdD3MxvxAuDFKp0
$ echo "$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0
来自我的 Mac 终端的命令行:
mysql --host=127.0.0.1 --port=3306 -uroot -p"mypass" wordpress -e "update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';"
成功完成...
然而....只有 .L2vsQdD3MxvxAuDFKp0
被写入每一行的 user_pass 字段。威士忌探戈狐步舞?
不用说,当我从像 DataGrip 这样的应用程序直接向数据库发出 update users set user_pass = '$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';
时,它会正确地获取整个字符串....
$
是 shell 变量的一部分,无意中被替换了。您必须转义 $
字符才能将其作为文字 $
.
$ echo "$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
.L2vsQdD3MxvxAuDFKp0
$ echo "$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0