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