代码之家  ›  专栏  ›  技术社区  ›  JasonGenX

mysql命令行sql执行之谜,只考虑字符串的一部分

  •  0
  • JasonGenX  · 技术社区  · 6 年前

    从Mac终端的命令行:

    mysql --host=127.0.0.1 --port=3306 -uroot -p"mypass" wordpress -e "update users set user_pass = '$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0';"

    成功完成。。。

    然而。。。。只有 .L2vsQdD3MxvxAuDFKp0 写入每行的用户密码字段。威士忌探戈狐步舞?

    enter image description here

    不用说当我发布 update users set user_pass = '$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0'; 直接从像DataGrip这样的应用程序发送到数据库它正确地接受了整个字符串。。。。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Progman    6 年前

    这个 $ 是shell变量的一部分,这些变量在无意中被替换。你必须逃离 $ 将其作为文本保留在字符串中的字符 $ .

    $ echo "$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
    .L2vsQdD3MxvxAuDFKp0
    $ echo "\$1\$Hat7oFty\$mA.L2vsQdD3MxvxAuDFKp0"
    $1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0
    
    推荐文章