用于将用户添加到mariadb的脚本

sirbozc5  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在尝试将用户添加到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
eagi6jfj

eagi6jfj1#

在您的脚本中没有任何地方要求它读取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=,。CSV中的C是“逗号”。
  • 您可以在此处阅读有关bash循环读取文件的完整说明:https://mywiki.wooledge.org/BashFAQ/001
    编辑

因为我没有您的数据库来测试,所以我在mysql行中添加了echo。删除它以便在您的系统中使用它。如果您收到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

相关问题