在 init.d 脚本中以 root 用户身份运行 SQL 调用?

在 init.d 脚本中以 root 用户身份运行 SQL 调用?

我有一个 SQL 查询,必须在软件更新后每次启动时运行(更新随新安装的 mysql 一起提供,因此更改了 debian-sys-maint 用户的密码,我的脚本在数据库中更新了该密码)。我在 /etc/init.d 中有一个脚本,当我以 root 用户身份运行它时,它会执行以下操作:./update。但当我启动时,它无法正常运行。我运行服务命令以使其运行整个init.d过程,但它说:

错误 1045 (28000):用户“root”@“localhost”的访问被拒绝(使用密码:NO

我输入了明文密码,/root/.my.cnf以避免在各种其他脚本中使用它并提高安全性。-p当我手动调用脚本时,它可以使我的 mysql 调用(不带)完美,但当我使用服务进程而不是在启动时则不能。在另一个问题上提到,脚本的环境可能没有正确设置,但我不知道必须设置哪些环境变量才能在脚本中调用 mysql,以便它读取/root/.my.cnf.

我已经检查过以确保该脚本由 root 拥有并具有 755 权限。我需要做什么才能让它发挥作用?

答案1

运行 init.d 脚本时,除非您在 init.d 脚本中显式获取该 .my.cnf 脚本,否则不会使用该脚本。有点像 crontab。因此,请尝试采购它,看看是否有效。

另一方面,这个脚本是否必须以 root 用户身份登录数据库?我理解为什么操作系统级别的用户需要是root,但是为什么数据库本身需要这样的特权用户呢?

答案2

事实证明,放在sudomysql 调用前面可以修复它,现在调用可以正确运行。我不知道:

  1. 为什么脚本不以 root 用户身份运行。
  2. 它以什么用户身份运行。
  3. 为什么该用户具有 sudoer 能力。

相关内容