[[ Скрипт создания БД (для пользователей) ]]

Скрипт создания БД (для пользователей)

Есть пользователь БД user1, которому разрешено создавать свои базы данных (пусть их имена будут начинаться с user1base- ). После создания базы он должен иметь все права на свою базу. Можно создать скрипт через который будут добавляться базы (удалятся) самим пользователем. При этом он имеет доступ только к своим базам.

#!/bin/bash
UID_ROOT=0
PASS_ROOT="mysql_rootpass"
DB_PREFIX="user1base"
DB_USER="user1"
 
if [ "$UID" -ne "$UID_ROOT" ]
then
  echo "Для работы требуются права root"
  exit 0
 fi
 
if [ -z "$1" ]
#1 - действие
then
  echo "Значение не задано"
  exit 0
 fi
 
case "$1" in
##############################################################################################################
        "add" )
if [ -z "$2" ] || [ -z "$3" ]
        #2 - имя базы
        #3 - кодировка
        then
         echo "Значение не задано"
         exit 0
 fi
 
        # Создание базы
        echo "CREATE DATABASE \`"$DB_PREFIX"-"$2"\`;" | mysql -u root -p$PASS_ROOT
        #######################################################################################################
        # Заданние локали
        #######################################################################################################
        case "$3" in
        "utf8" )
                echo "ALTER DATABASE  \`"$DB_PREFIX"-"$2"\` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;" | mysql -u root -p$PASS_ROOT
        ;;
        "cp1251" )
                echo "ALTER DATABASE  \`"$DB_PREFIX"-"$2"\` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;" | mysql -u root -p$PASS_ROOT
        ;;
 
        * )
                echo "Локаль не установлена"
        ;;
        esac
        ######################################################################################################
 
        # Установка прав
        echo "GRANT ALL ON \`"$DB_PREFIX"-"$2"\`.* TO \`"$DB_USER"\`@\`localhost\`;" | mysql -u root -p$PASS_ROOT
        echo "GRANT ALL ON \`"$DB_PREFIX"-"$2"\`.* TO \`"$DB_USER"\`@\`%\`;" | mysql -u root -p$PASS_ROOT
        echo "base created"
        ;;
 
        "del" )
if [ -z "$2" ]
        #2 - имя базы
        then
         echo "Значение не задано"
         exit 0
 fi
        echo "DROP DATABASE \`"$DB_PREFIX"-"$2"\`;" | mysql -u root -p$PASS_ROOT
        echo "DELETE FROM db WHERE db.Db = '"$DB_PREFIX"-"$2"' ;" | mysql -u root -p$PASS_ROOT mysql
        echo "base droped"
        ;;
 
        * )
        echo "Команда не найдена"
      ;;
esac
 
exit 0

Выполнять

./script add base1 utf8
./script add base1 cp1251
./script del base1

Так как скрипт содержит root пароль от MySQL, стоит поставить права на файл 700 владелец:группа root:root, а разрешение на его выполнение назначить для пользователя в sudo. Таки образом увидеть содержимое скрипта будет невозможно.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
50 -3 =
 
practice/mysql/script1.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki