[c5c522c] | 1 | #!/bin/bash |
---|
| 2 | |
---|
| 3 | DB=$1 |
---|
| 4 | CONFIG=$2 |
---|
| 5 | SQL=$3 |
---|
| 6 | |
---|
| 7 | if ! [ "$CONFIG" ]; then |
---|
| 8 | echo "SYN-3 mysql management:" |
---|
| 9 | echo "Usage: $0 <database> <configfile> < /path/to/sqlfile" |
---|
| 10 | echo "" |
---|
| 11 | echo "-Makes sure mysql is running" |
---|
| 12 | echo "-If configfile contains the magic %mysql_passwd% string:" |
---|
| 13 | echo " -Create random password" |
---|
| 14 | echo " -Grant sane privileges with random password on a username with same name as the database" |
---|
| 15 | echo " -Store password in the config file." |
---|
| 16 | echo " -If no database exists, open run mysql and pipe sql-data to it." |
---|
| 17 | echo "TIP: make sure your sql statements dont do any GRANTS or try to do things on other databases" |
---|
| 18 | exit 1 |
---|
| 19 | fi |
---|
| 20 | |
---|
| 21 | if echo $DB|grep _; then |
---|
| 22 | echo "Dont use underscores in the database name!"; |
---|
| 23 | exit 1 |
---|
| 24 | fi |
---|
| 25 | |
---|
| 26 | |
---|
| 27 | if grep %mysql_passwd "$CONFIG"; then |
---|
| 28 | echo "* Getting mysql root password.." |
---|
| 29 | #make sure those permissions are safe: |
---|
| 30 | chown root /etc/my.passwd |
---|
| 31 | chmod 700 /etc/my.passwd |
---|
| 32 | ROOTPW=`cat /etc/my.passwd` |
---|
| 33 | |
---|
| 34 | if ! [ "$ROOTPW" ]; then |
---|
| 35 | echo "Please put the sql rootpassword in /etc/my.passwd!" |
---|
| 36 | exit 1 |
---|
| 37 | fi |
---|
| 38 | |
---|
| 39 | echo "* Making sure mysql is running.." |
---|
| 40 | svcstart /service/mysql || exit 1 |
---|
| 41 | |
---|
| 42 | echo "* Resetting permissions and password for $DB" |
---|
| 43 | PASSWD=`cat /proc/sys/kernel/random/uuid` || exit 1 |
---|
| 44 | mysql --password="$ROOTPW" --execute="drop user '$DB'@localhost;" &>/dev/null |
---|
| 45 | mysql --password="$ROOTPW" --execute="grant all privileges on \`$DB\`.* to '$DB'@'localhost' identified by '$PASSWD';" || exit 1 |
---|
| 46 | |
---|
| 47 | if ! mysqlshow --password="$ROOTPW" "$DB" 2> /dev/null; then |
---|
| 48 | echo "* Importing sql statements...." |
---|
| 49 | mysql --password="$PASSWD" --user="$DB" || exit 1 |
---|
| 50 | fi |
---|
| 51 | |
---|
| 52 | echo "* Updating $CONFIG with password.." |
---|
| 53 | sed -i "s/%mysql_passwd%/$PASSWD/" "$CONFIG" || exit 1 |
---|
| 54 | |
---|
| 55 | echo "* cleaning up..." |
---|
| 56 | svcreset /service/mysql || exit 1 |
---|
| 57 | else |
---|
| 58 | echo "Configfile $CONFIG already has a password - doing nothing." |
---|
| 59 | echo "Please replace the password in the config with %mysql_passwd% if you want something to happen." |
---|
| 60 | fi |
---|
| 61 | |
---|
| 62 | |
---|
| 63 | |
---|
| 64 | exit 0 |
---|
| 65 | |
---|
| 66 | |
---|