我有一个非常简单的 bash 脚本文件,例如:
#!/bin/bash
USER="myuser"
PASS="mypass"
author="tester"
whoami >> /tmp/log
echo $author >> /tmp/log
cmdu=`/usr/bin/mysql -D mydb -s -u $USER -p$PASS -e "SELECT id FROM users WHERE username='$author'"`
echo $cmdu >> /tmp/log
echo "ended" >> /tmp/log
如果我以 root 身份运行此文件,我会在 /tmp/log 中得到输出:
root
tester
2987
ended
我的问题是,如果我作为另一个非 root 用户(例如 kola)运行此脚本,mysql 查询会失败并出现错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (13)
/tmp/log 中的输出是:
kola
tester
ended
您能帮忙修复一下什么问题才能使 mysql 查询运行吗?到目前为止我尝试了很多事情:
usermod -a -G mysql kola
chmod -R 777 /var/lib/mysql
在
kola
中创建mysql.user
mysql用户并授予所有权限
在生产中,我需要 apache 用户能够运行类似的 .sh 文件,其中包含 mysql 查询语句,但它失败了。
提前致谢!
伊万豪
我设法将主机添加到 mysql 语句中来修复它。
cmdu=`/usr/bin/mysql -h 127.0.0.1 -D mydb -s -u $USER -p$PASS -e "SELECT id FROM users WHERE username='$author'"`