为了让这个问题更清楚,让我解释一下我的用例。
我有一个与用户一起运行的 MySQL 数据库(所以是一个应用程序)mysql
,并且该数据库有 2 个root
用户:
- 一个可从 tcp 连接访问,但没有权限
- 一个可从本地套接字访问,并拥有所有权限
为了备份数据,我正在运行一个命令,root
以便它可以使用套接字连接并执行查询,因此创建的数据属于root
我不想要的,因为我需要访问(读/写)它作为mysql
用户。
有没有办法以用户身份执行命令,但强制/更改uid
写入磁盘上的文件的权限?
将输出通过管道输入
mysqldump
并tee
在tee
目标用户下运行。> /dev/null
防止额外输出到控制台。您需要
chown
备份操作后的文件。但是,首选选项是创建另一个数据库用户进行备份,并使用普通用户帐户登录该用户。您不应该将
root
帐户用于任何不明确需要所有权限的事情。另一种解决方案是创建一个 mysql 拥有的空文件,然后使用“>>”附加文件而不是创建它。
我没有尝试过,但你可以使用 cat 而不是使用 tee -
或者在脚本使用之前创建文件或文件夹并设置权限。