向mariadb添加用户的脚本



我正在尝试添加用户到mariadb。男性用户使用航空公司作为密码,女性使用大陆作为密码,所有这些信息都以csv文件的形式保存。

由于某些原因,我的脚本不工作。脚本如下:

#!/bin/bash -p
FILENAME=mgarr048.csv  
while IFS=: read -r username first last gender dob state municipality season continent elective f1 airline
do
(( gender == "m" )) || continue
mysql -e GRANT INSERT ON *.* to $username@'%' IDENTIFIED by $airline;
done 

csv标题

username,first,last,gender,dob,state,municipality,season,continent,elective,f1,airline

脚本中没有任何地方告诉它读取FILENAME。像这样修改你的脚本:

#!/bin/bash
FILENAME="mgarr048.csv"
while IFS=, read -r username first last gender dob state municipality season continent elective f1 airline
do
if [[ "$gender" != "m" ]]
then
echo "mysql -e GRANT INSERT ON *.* to $username@'%' IDENTIFIED by "$airline""
fi
done < "$FILENAME"
  • 你说你有CSV文件,所以我把IFS=;改成了IFS=,。C在CSV中是&;comma&;
  • 你可以阅读bash循环读取文件的完整描述:https://mywiki.wooledge.org/BashFAQ/001

编辑

因为我没有你的数据库测试,我把echo添加到mysql行。删除它以在您的系统上使用它。如果您得到mysql错误,它不是脚本,它与您的mysql命令和/或数据库有关。

使用该数据集进行测试:

username1,user1,name1,m,1111-11-11,State1,City1,season1,continent1,elective1,f1,airline1
username2,user2,name2,f,2222-22-22,State2,City2,season2,continent2,elective2,f2,airline2

输出:

mysql -e GRANT INSERT ON *.* to username2@'%' IDENTIFIED by airline2

最新更新