Debian.pro

Блог для пользователей и администраторов Debian


Скрипты для создания БД в mysql.

Дада, кто-то уже догадался, что я уселся за скрипт, который автоматизирует настройку и добавление новых сайтов на nginx+amp в debian squeeze. Почти все скрипты уже готовы, сейчас я думаю как лучше их обернуть в одну общую оболочку.

Тем временем скрипты для создания новых баз данных уже готовы, так как больше всего меня утомляет создавать их руками.
Скрипты автоматизируют создание баз данных в mysql по этому мануалу. Некоторые ситуации ещё не предусмотрены (особенно во втором скрипте), потом доделаются. А может и не доделаются — нам же нужен маленький скрипт для создания БД, а не phpmyadmin в консоли.
Может быть, кому-либо пригодятся.

В теле скриптов смените dbdir, если они у вас не в /var/lib/mysql, иначе не будет работать проверка на существование БД.

Для «установки» делаем так:
root@debian:~# wget -O /usr/bin/createdatabase.sh http://debian.pro/files/scripts/debian-autonlamp/createdatabase.sh
root@debian:~# chmod +x /usr/bin/createdatabase.sh
root@debian:~# wget -O /usr/bin/createdatabase-random.sh http://debian.pro/files/scripts/debian-autonlamp/createdatabase-random.sh
root@debian:~# chmod +x /usr/bin/createdatabase-random.sh

После чего у нашей системы открываются новые мегавозможности.
Возможность первая:
root@autonlamp:~# createdatabase-random.sh
database directory to check: /var/lib/mysql/
Creating database…
Database created.
Database name: kl2wx8zjl2hqzw
Mysql user: ovcjogq4my1glw
Mysql password: 9xq7bv02iog55j

Возможность вторая:
root@autonlamp:~# createdatabase.sh -h
You should set 3 parametres:
$1 = Mysql Username (can be existing one, but password will change),
$2 = database name,
$3 = password for mysql user.
For example, you can run this:
createdatabase.sh user database password

Ну и соответственно:
root@autonlamp:~# createdatabase.sh mysqlusern100500 mysqldb100501 megasuperpassword
database directory to check: /var/lib/mysql/
Creating database...
DB mysqldb100501 created.
Mysql user, which can access this database:
mysqlusern100500
Password for mysqlusern100500 in mysql:
megasuperpassword

Ну и тексты самих скриптов для ленивых:
createdabase.sh:

#!/bin/bash
if [ "$#" != "3" ]; then
echo -e "You should set 3 parametres: \n\$1 = Mysql Username (can be existing one, but password will change), \n\$2 = database name, \n\$3 = password for mysql user.\nFor example, you can run this:\ncreatedatabase.sh user database password" 1>&2
exit 1
fi
dbuser=$1
dbname=$2
dbpassword="$3"
dbdir="/var/lib/mysql/"
echo "database directory to check: $dbdir"
if [ -e $dbdir/$dbname ]; then
echo -e "Database exist\n\nI am dying now\nChoose another name for your database.\n\n" && exit
fi
echo "Creating database..."
mysql -e "create database \`$dbname\`; grant all on \`$dbname\`.* to '$dbuser'@'localhost'; set password for '$dbuser'@'localhost' = password('$dbpassword');"
if [ $? != 0 ];
then
echo -e "\n\nSorry, it seems some errors ocured. Check STDOUT to see."
else
echo -e "DB $dbname created.\nMysql user, which can access this database:\n $dbuser\nPassword for $dbuser in mysql:\n $dbpassword"
fi

createdatabase-random.sh:
#!/bin/bash
dbuser=$(head -c 100 /dev/urandom | base64 | sed 's/[+=/A-Z]//g' | tail -c 15)
dbname=$(head -c 100 /dev/urandom | base64 | sed 's/[+=/A-Z]//g' | tail -c 15)
dbpassword=$(head -c 100 /dev/urandom | base64 | sed 's/[+=/A-Z]//g' | tail -c 15)
dbdir="/var/lib/mysql/"
echo "database directory to check: $dbdir"
if [ -e $dbdir/$dbname ]; then
echo -e "Database exist\n\nI am dying now\nChoose another name for your database.\n\n" && exit
fi
echo "Creating database..."
mysql -e "create database \`$dbname\`; grant all on \`$dbname\`.* to '$dbuser'@'localhost'; set password for '$dbuser'@'localhost' = password('$dbpassword');"
if [ $? != 0 ];
then
echo -e "\n\nSorry, it seems some errors ocured. Check STDOUT to see."
else
echo -e "Database created.\nDatabase name: $dbname\nMysql user: $dbuser\nMysql password: $dbpassword"
fi


Комментарии (3):

  1. Eduard :

    Очень симпатично!
    В createdatabase-random неплохо было бы использовать createdabase.sh с параметрами, а то получается дублирование кода. При изменениях, надо будет 2 раза менять.

  2. ig :

    if [ $? != 0 ];
    then
    echo -e «\n\nSorry, it seems some errors ocured. Check STDOUT to see.»

    что это?

  3. Предложение посмотреть в консоль, ибо база не создалась.

    А вообще скрипт уже сильно по-другому выглядит — https://github.com/inkvizitor68sl/anlamp/blob/master/junk/mkdb.sh

Написать комментарий