0

Shell :: simple MySQL DB provisioning

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
#provmysqldb.sh
 
ARGS=("$@")
 
#GLOBALS
MYSQLHOST=your.server.name
MYSQLPASS=yourpass
 
#ARGS
ACTION=${ARGS[0]}
USER=${ARGS[1]}
#maybe we want to split this out later
DB=${ARGS[1]}
 
if [[ $ACTION && $USER && $DB ]]; then
	case $ACTION in
		create)
			#check to see if db exists
			echo "use ${DB}" | mysql -s -h $MYSQLHOST -u root -p$MYSQLPASS 2> /dev/null
 
			if [ $? -ne 0 ]; then
				echo -n 'enter password: '
				read PASS
 
				OP="
				create database ${DB};
				create user '${USER}'@'%' identified by '${PASS}';
				grant all ON ${DB}.* to '${USER}'@'%';
				flush privileges;"
			else
				echo "The database/user: ${DB} already exists"
			fi
			;;
		delete)
			#check to see if db exists
			echo "use ${DB}" | mysql -h $MYSQLHOST -u root -p$MYSQLPASS 2> /dev/null
 
			if [ $? -eq 0 ]; then
				OP="
				drop database ${DB};
				drop user '${USER}'@'%';
				flush privileges;"
			else
				echo "The database/user: ${DB} doesn't exist"
			fi
			;;
		*)
			echo 'Operation not supported'
			;;
	esac
 
	if [[ $OP ]]; then
		echo $OP | mysql -h $MYSQLHOST -u root -p$MYSQLPASS 2> /dev/null
		if [ $? -eq 0 ]; then
			echo 'Operation Succeeded!'
		else
			echo 'Operation Failed!'
		fi
	fi
 
 
else
	echo 'USAGE: provmysqldb.sh <action:create|delete> <dbname>'
fi

Leave a Reply

Spam protection by WP Captcha-Free