mysql командная строка sql выполнение загадка, рассматривается только часть строки

Из командной строки с моего терминала Mac:

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

завершается успешно...

однако.... только .L2vsQdD3MxvxAuDFKp0 записывается в поле user_pass в каждой строке. Виски Танго Фокстрот?

введите описание изображения здесь

Само собой разумеется, когда я выпускаю update users set user_pass = '$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0'; непосредственно в БД из приложения, такого как DataGrip, он принимает всю строку правильно....

1 ответ

Решение

$ являются частью переменных оболочки, которые непреднамеренно заменяются. Вы должны избежать $ символ, чтобы держать его в строке как литерал $,

$ echo "$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0"
.L2vsQdD3MxvxAuDFKp0
$ echo "\$1\$Hat7oFty\$mA.L2vsQdD3MxvxAuDFKp0"
$1$Hat7oFty$mA.L2vsQdD3MxvxAuDFKp0
Другие вопросы по тегам