shell mysql 创建用户 授权

脚本代码

#!/bin/bash

#功能描述:创建用户
#参数1  用户名称
#参数2  密码
#参数3  数据库名称1
#参数4  权限1(readwrite、readonly)
#          数据库名称n
#          权限n(readwrite、readonly)

username=root
password=root
host=10.70.2.157
port=3306
connectstr="mysql -u${username} -p${password}  -h${host}  -P${port}"

#创建用户
result=`${connectstr} -e "CREATE USER \"$1\"@\"localhost\"  IDENTIFIED BY  \"$2\";CREATE USER \"$1\"@\"%\"  IDENTIFIED BY  \"$2\"" 2>&1`

# $? 值为 0,表示执行成功
if [  $? -eq 0 ]
then
   #分配公共权限
   result=`${connectstr} -e "GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO  \"$1\"@\"%\" ;
                                        GRANT SELECT ON  performance_schema.* TO  \"$1\"@\"%\";
                                        GRANT SELECT ON  mysql.proc  TO  \"$1\"@\"%\";
                                        GRANT SELECT ON  mysql.general_log  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.func  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.time_zone_transition_type  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.time_zone_leap_second  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.slow_log  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.time_zone_name  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.help_category  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.help_relation  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.time_zone_transition  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.help_topic  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.time_zone  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.event  TO  \"$1\"@\"%\"; 
                                        GRANT SELECT ON  mysql.help_keyword  TO  \"$1\"@\"%\"; 
                                        " 2>&1`
   if [  $? -eq 0 ] 
   then
        #分配特定数据库权限
        #第一个参数是用户名,第二个参数是密码,然后:数据库名  权限  数据库名  权限....
        if [ $#  -gt 3 ]
        then
              count=0
              for var in $@
              do
                   count=`expr ${count} + 1`
                  if [ ${count} -eq 1 ] ||  [ ${count} -eq 2 ]
                  then
                     continue
                  fi
                  #余数是1,说明 var 是数据库,余数是0,说明 var 是权限
                  quyu=`expr ${count} % 2`
                  if [ $quyu -eq 0 ]
                  then
                      account_privilege=$var
                      if [ ${account_privilege} = "readwrite" ] 
                      then
                          grant="GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON"
                      else
                          grant="GRANT SELECT, LOCK TABLES, SHOW VIEW ON"
                      fi
                       result=`${connectstr} -e "${grant}  ${database}.*  TO  \"$1\"@\"%\"" 2>&1`       
                       if [  $? -ne 0 ] 
                       then
                          #出现异常,退出
                          echo "{\"result\":false,\"desc\":\"${result}\"}"
                          exit 0
                       fi
                  else
                  database=${var}
                  fi
              done
              echo "{\"result\":true}"
         else
              #没有指定数据库权限时,创建用户成功后,直接返回true
              echo "{\"result\":true}"
        fi
   else
       echo "{\"result\":false,\"desc\":\"${result}\"}"
   fi
else
   echo "{\"result\":false,\"desc\":\"${result}\"}"
fi


 调用

sh 脚本名称  user01 123456  db01  readwrite   db02  readonly

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2267511