![脚本加密密码失败](https://linux22.com/image/189733/%E8%84%9A%E6%9C%AC%E5%8A%A0%E5%AF%86%E5%AF%86%E7%A0%81%E5%A4%B1%E8%B4%A5.png)
我正在测试使用 bash 脚本将用户添加到我的数据库!我的 bash 脚本代码是:
mysql -u root <<MYSQL_SCRIPT
USE mail_server;
INSERT INTO mail_server.virtual_users
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('test@test', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]');
MYSQL_SCRIPT
当我运行脚本时,用户被保存,但密码在数据库中保存为“0 *”!我所有的用户密码都得到密码 0 * 希望有人可以帮助我
答案1
您的问题来自这样一个事实,即此处文档(事物<<SOMETHING
)中的 、$
和\
具有`
特殊含义。
为了避免这种情况,您应该通过引用第一个分隔符的任何部分来切换到此处文档的版本,其中这些字符不再特殊。示例如下:
mysql -u root <<\MYSQL_SCRIPT
MYSQL_SCRIPT
mysql -u root <<'M'YSQL_SCRIPT
MYSQL_SCRIPT
mysql -u root <<MYSQL_SCRIP\T
MYSQL_SCRIPT
mysql -u root <<MY"SQL_SC"RIPT
MYSQL_SCRIPT
mysql -u root <<'MYSQL_SCRIPT'
MYSQL_SCRIPT