如果以非 root 用户身份执行 bash 脚本,bash 脚本中的 Mysql 查询将失败

问题描述 投票:0回答:1

我有一个非常简单的 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 查询语句,但它失败了。

提前致谢!

伊万豪

bash mysql-connector
1个回答
0
投票

我设法将主机添加到 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'"`
© www.soinside.com 2019 - 2024. All rights reserved.