是否可以使用 shell 脚本来运行以下命令?
mysql -u user
use mydb
delete from mydata where row='xx'
答案1
这是“此处文档”的工作:
mysql -u user << END_CMDS
use mydb
delete from mydata where row='xx'
END_CMDS
“此处文档”是一种将 SQL 内嵌到脚本本身中的方法。我不确定用户 ID 的 MySQL 密码是如何发挥作用的。您必须尝试该用户是否有密码。
可以在 shell 脚本中缩进调用mysql
,但不要缩进结束“此处文档”的标记,在上面的示例中为 END_CMDS。
答案2
该命令可以帮助您:
mysql -u user -p mydb --execute="从 mydata 中删除,其中 row='xx'"
答案3
您可能有兴趣检查我的一些脚本神话电视工具网页。它们是从 shell 脚本运行 mysql 命令以及基于 getopt 选项解析构建中等复杂的 mysql 命令(例如,使用多个 WHERE 子句)的相当好的示例。
它们都使用相同的基本技术来构造 SQL 字符串并将其通过管道传输到mysql
or mysql --batch
。
它们都不使用--user
或--password
选项,因为系统上的任何用户都可以搜索/proc
(或只是运行ps
)并在命令行选项中查看登录名和密码。相反,它们依赖于~/.my.cnf
包含登录凭据的文件的存在。