我有以下脚本:
[root@localhost:~]# cat /mnt/start_discovery
#!/bin/sh
InterfaceNumber=$((65471 - $1))
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
和 3 个允许执行命令的用户:root、ste 和 www。用户 ste 和 www 使用 sudo 执行命令,没有 sudo root 工作。
[root@localhost:~]# cat /etc/sudoers
root ALL=(ALL) ALL
ste ALL=(ALL) ALL
www ALL=/mnt/start_discovery *,\
sh -xv *
当我从用户 www 运行命令时 - 一切正常:
[www@localhost:~]$ sudo sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ mysql --user= --execute=insert into dc.discovery_commands(device, job_ttd) select 65471, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);
但是对于用户ste:
[ste@localhost:~]$ sudo sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ERROR 1045 (28000): Access denied for user ' '@'localhost' (using password: YES)
对于用户 root 相同:
[root@localhost:~]# sh -xv /mnt/start_discovery 0
#!/bin/sh
InterfaceNumber=$((65471 - $1))
+ InterfaceNumber=65471
mysql --user=' ' --execute="insert into dc.discovery_commands(device, job_ttd) select $InterfaceNumber, DATE_ADD( UTC_TIMESTAMP(), INTERVAL 12 HOUR);"
+ERROR 1045 (28000): Access denied for user ' '@'localhost' (using password: YES)
对于用户 root 和 ste 我在文件 ~/.my.cnf 中有 mysql 的密码,对于用户 www - 没有任何访问 mysql 的权限。 创建 mysql 的用户:
[root@localhost:~]# mysql -e "select user,host,password from mysql.user;"
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *48A8ACDAF5434778D6B5D0254833B2AEC555514A |
| ste | localhost | *425AF4AF33C4FB42AC52A0A6630DEE61AB94A67A |
| | localhost | |
+------+-----------+-------------------------------------------+
知道为什么会这样吗?以及如何更好地让所有用户都可以执行此脚本(脚本具有权限 750 并且需要 sudo)?
最佳答案
尝试 #2 和 #3(以 ste
或 root
运行脚本)出现的错误提到“(使用密码:YES)
”,尽管您的脚本中的调用行没有提供密码。
这两个用户必须有一个自定义的个人配置文件 (~/.my.cnf),其中包含一个 password
子句(在这种情况下,默认情况下始终提供此类密码)。
尝试在脚本中添加以下选项:--password=''
关于mysql - sudo 用于使用 mysql 连接匿名用户的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15473161/