文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

shell循环和函数引用

2024-04-02 19:55

关注
#!/bin/bash
#菜单
function menu(){
echo -e "\t\t\t************************"
echo -e "\t\t\t*       操作数据库     *"
echo -e "\t\t\t************************"
echo -e "\t\t\t* 1、登录数据库        *"   
echo -e "\t\t\t* 2、创建用户或增加权限*"
echo -e "\t\t\t* 3、sql语句操作数据库 *"
echo -e "\t\t\t* 4、更改用户密码      *"
echo -e "\t\t\t* 0、退出              *"
echo -e "\t\t\t************************"
}
#输入mysql的用户名和密码
function input(){
echo -e "\t\t\t请登录数据库"
read -p "请输入mysql用户名:" user
read -s -p "请输入mysql的密码:" passwd
}
#判断输入的用户名密码是否正确
function panduan(){
mysql -u$user -p$passwd -e exit 1>/dev/null 2>&1
if [ $?!= 0 ]
then
echo -e "\n\t\t\t用户名或密码错误,请重新输入!"
input
else
echo -e "\n\t\t\t数据库登录成功!"
fi
}
#创建用户并授权
function createuser(){
echo -e "已存在的用户如下,如果输入的用户已存在,则增加该用户到权限"
mysql -u$user -p$passwd -e "select user,host from mysql.user;"
read -p "请输入要创建的用户名:" newuser
read -s -p "请输入新用户的密码:" newpasswd
echo -e "请输入此用户的主机名(%代表所有的主机都能用此账户访问数据库,具体到某几个主机名中间用英文的逗号隔开,如localhost,192.168.1.1):"
read hostname
echo -e "请输入授予此用户操作数据库的权限(all代表全部,具体到某几个权限中间用英文的逗号隔开,如create,select):" 
read grant
echo -e "请输入授予此用户的访问的库和表的权限(*.*代表全部的库和表,具体到某几个库中间用英文的逗号隔开,如database1.table1,database2.table2):"
read database
mysql -u$user -p$passwd -e "grant $grant on $database to '$newuser'@'$hostname' identified by '$newpasswd';" 2>/tmp/error.txt
if [ -s /tmp/error.txt ]
then
echo -e "\t\t数据库的权限或库名、表名输入错误!"
else
echo -e "\n\t\t\t用户创建成功!"
fi
}
#命令行操作数据库
function orders(){
while true
do
echo -e "\n"
echo -e "请输入mysql语句:"
read order
mysql -u$user -p$passwd -e "$order" 2>/dev/null
if [ $?!=0 ]
then
echo -e "\t\t\tsql语句输入错误!"
fi
done
}
#修改密码
function change(){
echo -e "数据库中已存在的用户如下:"
tuser=`mysql -u$user -p$passwd -e "select distinct User from mysql.user;"|awk '{print $1}'|sed -n '2,$p'`
echo $tuser
while true
do
echo -e "请输入要修改的用户名:"
read cuser
echo -e "请输入新密码"
read -s cpasswd
echo -e "请再次输入新密码"
read -s zpasswd
echo $tuser|grep $cuser>/tmp/tuser.txt
if [ "$cpasswd" = ""$zpasswd"" -a -s /tmp/tuser.txt ]
then
mysql -u$user -p$passwd <<EOF
update mysql.user set password=password('$cpasswd') where user='$cuser';
flush privileges;
EOF
echo -e "\t\t\t$cuser用户的密码修改成功!"
elif [ "$cpasswd" != ""$zpasswd"" ]
then
echo -e "\t\t\t两次输入的密码不一致!"
else
echo -e "\t\t\t你输入的用户不存在!"
fi
done
}
while true;do
menu
read -p "请输入数字(0~4):" i
case $i in
1)
while true
do
input
mysql -u$user -p$passwd 2>/tmp/mysql.txt
if [ -s /tmp/mysql.txt ]
then
echo -e "\n\t\t\t用户名或密码错误,请重新输入!"
else
break
fi
done
;;
2)
input
panduan
createuser
;;
3)
input
orders
;;
4)
input
panduan
change
;;
0)
exit 0;;
*)
echo -e "\t\t\t请输入有效数字!"
;;
esac
done


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯