Linux Script&当从其他脚本调用时,MySql操作无法正常工作

时间:2014-12-18 10:26:04

标签: mysql linux bash shell

我写了这段代码,如果没有那么就将行插入表中,否则,再将'cnt'更新一次。这很有效,当我从命令行调用它时,当我从shell脚本调用它时,这不起作用。

file=$1
echo "$0: Path to store $file" ;
res=`mysql -e "use spam_sending_scripts; select * from spamemailcount where path = '$file' limit 0,1"`
echo $res
if [ -z "$res" ]
then
    mysql -e "use spam_sending_scripts; INSERT INTO spamemailcount (cnt,path) VALUES(1,'$file');"
    echo "Inserting into DB $file , res $res" ;
    exit ;
fi
mysql -e "use spam_sending_scripts; update spamemailcount SET cnt=cnt+1 where path = \"$file\"" ;
echo "Updating into DB $file" ;
#mysql -e "use spam_sending_scripts; select * from spamemailcount" >> /var/log/sendmail.log
mysql -e "use spam_sending_scripts; select * from spamemailcount"

root@server [/home]# insertintodb.sh AAA ==>这很好。

当我从另一个脚本调用时,会执行此文件,但Insert不起作用。

我调用它:/home/insertintodb.sh $path

$path变量正确传递给insertintodb.sh

我收到以下错误:

++ mysql -e 'use spam_sending_scripts; select * from spamemailcount where path = '\''hackerssquadron.com/wp-comments-post.php'\'' limit 0,1'
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 

2 个答案:

答案 0 :(得分:4)

使用chmod命令使其可执行

chmod ugo+x insertinodb.sh

然后尝试将其称为@Jdamian建议

bash -x /home/insertintodb.sh "$path"

答案 1 :(得分:2)

这个问题已经解决了。

  1. 当我尝试从命令行调用脚本时,它工作正常。 原因=>我以root身份运行此脚本。没问题

  2. 当我使用另一个shell脚本调用脚本时,它无效。 原因:这个主要脚本由apache调用,它正在尝试访问根数据库,因此权限被拒绝。

  3. 基于天网和天网的输入Jdamian,我能够调试并解决它。

    非常感谢您的支持,通常这是专家快速解决技术问题的最佳场所之一。