Создание множества баз данных и пользователей в MySQL

В рамках курса “Базы данных” на кафедре ММЭ для выполнения лабораторных работ понадобилось запустить MySQL сервер и создать для каждого студента свою учетную запись и базу данных на сервере.

Для формирования SQL-сценария для создания баз данных и пользователей использовался bash-скрипт. В первой bash-скрипта части читается тектовый файл students.txt, в котором в одну колонку записаны номера зачетных книжек студентов в формате YYYY-NNNNN. Для каждого номера зачетной книжки генерируется пароль pwgen. Результат (номер пароль) записывается в текстовый файл userpass.txt.

#!/bin/bash

BTICK='`'

cat /dev/null > 'userpass.txt'

while IFS=" " read -r USERNAME remainder
do      
    PASSWORD=`pwgen 12 1`
    echo $USERNAME $PASSWORD >> 'userpass.txt'
done < "students.txt"

Во второй части из файла userpass.txt читаются номера зачетных книжек и пароли, формируются имя пользователя uYYYY_NNNNN и база данных db_YYYY_NNNNN. SQL-скрипт создания базы данных и пользователя записывается в файл create_user_script.sql.

cat /dev/null > 'create_user_script.sql'

while IFS=" " read -r UNAME UPASS remainder
do
    UNAME=${UNAME//-/_}  
    DBNAME="db_$UNAME"
    UNAME="u$UNAME"
    
    Q1="CREATE DATABASE IF NOT EXISTS $DBNAME;"
    Q2="GRANT ALL ON ${BTICK}$DBNAME${BTICK}.* TO '$UNAME'@'%' IDENTIFIED BY '$UPASS';"
    echo $Q1 >> 'create_user_script.sql'
    echo $Q2 >> 'create_user_script.sql'
done < "userpass.txt"

echo 'FLUSH PRIVILEGES;' >> 'create_user_script.sql'

2021

2020

2019

2018


© 2020. All rights reserved.

Powered by Hydejack v9.1.0