我有一个托管我的 Web 应用程序的 Ubuntu 服务器。
但由于某些安全原因,它无法通过 Internet 看到。客户需要更新数据库并更新其中的一些值,但由于相同的安全原因,我不再允许在那里,所以他们要求我创建一个可执行文件(如 Windows 中的批处理文件)来更新数据库,手动并向当局解释,以便他们更新数据库。
假设我有一个名为myDb的数据库,用户说myUser和myPassword,我需要执行以下查询:
UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
如果您必须创建的脚本只是由有权访问服务器的人按原样执行,并且如果要放入数据库的数据已交付给您(因此没有动态),您将不得不制作一个 bash 脚本像这样 :
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <SQL commands file>"
exit 1
fi
if [ ! -f "$1" ]; then
echo "The file specified in parameter ($1) does not exist or is not readable"
exit 2
fi
USER=myUser
PASS=myPassword
DB=myDB
SERVER=ipMysql
mysql -u$USER -p$PASS -h$ipMysql $DB < $1
Run Code Online (Sandbox Code Playgroud)
将上述所有内容复制到一个可以调用dataUpload.sh 的测试文件中,然后使其可执行:sudo chmod +x dataUpload.sh。
这个脚本有什么作用?
ps -ef或者ps auxwww当脚本将运行。您可能会寻找更安全的方法)mysql客户端将 SQL 文件的 SQL 命令加载到 DB 中。这个 SQL 命令文件只是一个文本文件,包含所有 SQL 命令INSERT或UPDATE数据,如果您可以访问服务器,您将自己完成。一行一行的命令,如本例所示:
UPDATE myDb.member SET member_creditDueDate='2025-09-21 12:00:00';
UPDATE myDb.member SET member_credutDueDate='2025-10-11 00:00:00';
Run Code Online (Sandbox Code Playgroud)
等等。
如果您编写一个文件,比如说,名为20140620_dbupdate.sql,那么有权访问数据库的人只需dataUpload.sh 20140620_dbupdate.sql在命令行提示符下执行即可。
通过拆分 shell 和 SQL 命令,您可以:
这是解决您的问题的第一个快速方法,为了详尽无遗,我需要涵盖:
| 归档时间: |
|
| 查看次数: |
4059 次 |
| 最近记录: |