1、配置数据库连接信息 config.ini
[client]
host="10.*.*.*"
port=3306
user="root"
password="123456"
2、设置需要创建数据库及用户信息变量
export MYSQL_DATABASE=datbase01,datbase02,datbase03
export MYSQL_USER=user01,user02,user03
export MYSQL_PASSWORD=passd01,passd02,passd03
3、执行批量脚本
#!/bin/bash
# Date:2021-01-12
# Author: Create by cooper_73
check_config(){
ch_m=`mysqladmin --defaults-extra-file=./config.ini ping`
if [ "$ch_m" = "mysqld is alive" ];then
con_res="ok"
else
echo -e "--> MySql can not connected, Please check ./config.ini or mysql server!"
exit 0
fi
}
check_env(){
if [ ! $MYSQL_DATABASE ] || [ ! $MYSQL_USER ] || [ ! $MYSQL_PASSWORD ]; then
echo -e "\n*** Place check The environment variable whith a null:***\n---> MYSQL_DATABASE=$MYSQL_DATABASE\n---> MYSQL_USER=$MYSQL_USER\n---> MYSQL_PASSWORD=$MYSQL_PASSWORD \n"
exit 0
elif [ ${#MYSQL_USER_ARRAY[@]} == ${#MYSQL_DATABASE_ARRAY[@]} ] && [ ${#MYSQL_USER_ARRAY[@]} == ${#MYSQL_PASSWORD_ARRAY[@]} ];then
env_res="ok"
else
echo -e "\n*** The environment variable's number is not correct: ***\n---> MYSQL_DATABASE:${#MYSQL_DATABASE_ARRAY[@]} \n---> MYSQL_USER:${#MYSQL_USER_ARRAY[@]}\n---> MYSQL_PASSWORD:${#MYSQL_PASSWORD_ARRAY[@]} \n"
exit 0
fi
}
mysql_active(){
mysql --defaults-extra-file=./config.ini "$@"
}
e_info(){
if [ $? -eq 0 ]; then
echo -e "==>> Execute Successfully! \n"
else
echo -e "[[error]]: Sorry, Sql Execution Failured!\n"
fi
}
check_config
check_env
IFS=',' read -r -a MYSQL_DATABASE_ARRAY <<< $MYSQL_DATABASE
IFS=',' read -r -a MYSQL_USER_ARRAY <<< $MYSQL_USER
IFS=',' read -r -a MYSQL_PASSWORD_ARRAY <<< $MYSQL_PASSWORD
for index in ${!MYSQL_USER_ARRAY[@]}
do
DATABASE=${MYSQL_DATABASE_ARRAY[index]}
USER=${MYSQL_USER_ARRAY[index]}
PASSWORD=${MYSQL_PASSWORD_ARRAY[index]}
echo "Creating database ${DATABASE} ..."
mysql_active --database=mysql -e "CREATE DATABASE IF NOT EXISTS \`$DATABASE\` ;"
e_info
echo "Creating user ${USER} ..."
mysql_active --database=mysql -e "CREATE USER IF NOT EXISTS '$USER'@'%' IDENTIFIED BY '$PASSWORD' ;"
e_info
echo "Giving user ${USER} access to schema ${DATABASE} ..."
mysql_active --database=mysql -e "GRANT ALL ON \`${DATABASE//_/\\_}\`.* TO '$USER'@'%' ;"
e_info
mysql_active --database=mysql <<<"FLUSH PRIVILEGES ;"
done
echo -e "\n *** MySql Initialization is complete *** \n"