检查bash脚本中是否存在mysql用户,收到错误

时间:2015-04-16 15:09:14

标签: mysql bash exists

我正在使用bash脚本检查mysql用户是否存在,并使用以下命令:

checkuser=`mysql -u $mysqlroot -p$rootpw -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$user_name') ;"`
lastchr=${checkuser#${checkuser%?}}
if [ $lastchr == 1 ] ; then
      clear
      echo "ERROR: mysql user exists"
fi

我的问题是,终端总是给我以下反馈:

/etc/hosting: line 775: syntax error near unexpected token `('
/etc/hosting: line 775: `checkuser=`mysql -u $mysqlroot -p$rootpw -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$user_name') ;"`'

我试图逃避"("和")",但我没有取得成功。

我做错了什么?我尝试了所有不同类型的转义,单引号,......它没有帮助。

亲切的问候

编辑: 因为可能需要,前一行:

echo "creating mysql user ..."
echo ""
read -p "enter username: " user_name

if [[ -z "$user_name" ]] ; then
      clear
      echo "username mustn't be empty!"
      create_mysql_user    # calls function again
fi

# check username length
if [ ${#my_user} -gt 16 ] ; then
      clear
      echo "ERROR: the username mustn't be longer than 16 characters"
      create_mysql_user
fi

1 个答案:

答案 0 :(得分:0)

这是一个老问题,但仍然可以在互联网上搜索。我想回答它,因为它没有正确的答案。

要使用bash检查mysql用户是否存在,您可以使用以下包jq将查询结果转换为可读输出为数组格式的用户列表:

 # Get list of all sql users
 sql_users=$(mysql -e "SELECT USER FROM mysql.user;" | jq -rR .)


 check_sql_user=$(echo "${sql_users}" | grep "username_to_check")

 if [[ -z "${check_sql_user}" ]]; then

  echo "No user found"
  # Call create user here
 else
  echo "User found"

 fi