2013-03-18 58 views
1

连接我已经以下脚本:须藤为脚本使用MySQL与匿名用户

[[email protected]:~]# 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的用户,允许执行命令:根,STE和www。用户ste和www使用sudo执行命令,没有sudo的root工作。

[[email protected]:~]# cat /etc/sudoers 
root ALL=(ALL) ALL 
ste  ALL=(ALL) ALL 
www  ALL=/mnt/start_discovery *,\ 
      sh -xv * 

当我运行从用户的WWW命令 - 所有的罚款:

[[email protected]:~]$ 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:

[[email protected]:~]$ 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:

[[email protected]:~]# 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,我有mysql的密码在文件〜/ .my.cnf,用户www - 没有任何访问MySQL。创建MySQL的 用户:

[[email protected]:~]# mysql -e "select user,host,password from mysql.user;" 
+------+-----------+-------------------------------------------+ 
| user | host  | password         | 
+------+-----------+-------------------------------------------+ 
| root | localhost | *48A8ACDAF5434778D6B5D0254833B2AEC555514A | 
| ste | localhost | *425AF4AF33C4FB42AC52A0A6630DEE61AB94A67A | 
|  | localhost |           | 
+------+-----------+-------------------------------------------+ 

任何想法,为什么这么回事?如何让所有的用户都有可能执行这个脚本(脚本具有权限750和sudo是必需的)?

回答

1

错误显示在尝试#2,#3(运行脚本steroot)向上提“(using password: YES)”,虽然没有提供对你的脚本调用线密码。

这两个用户必须有一个包含password子句的自定义个人配置文件(〜/ .my.cnf)(在这种情况下,此类密码总是默认提供)。

尝试在脚本中添加以下选项:--password=''

+0

谢谢你的男人!容易的决定,我已经尝试过,但可能会犯错误。无论如何,这行工作正常:mysql --user =''--password =''--execute =“插入到dc.discovery_commands(device,job_ttd)选择$ InterfaceNumber,DATE_ADD(UTC_TIMESTAMP(),INTERVAL 12 HOUR); “ – 2013-03-18 10:01:37