Skip to content

Commit 04d617d

Browse files
author
Serghey Rodin
committed
MySQL 5.7 support. Fixes hestiacp#959. Thanks Maks Skamasle!
1 parent 381da55 commit 04d617d

File tree

2 files changed

+26
-43
lines changed

2 files changed

+26
-43
lines changed

func/db.sh

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,20 @@ mysql_connect() {
2525
chmod 660 $mycnf
2626
fi
2727
fi
28-
err="/tmp/e.mysql"
29-
mysql --defaults-file=$mycnf -e 'SELECT VERSION()' >/dev/null 2> $err
28+
mysql_out=$(mktemp)
29+
mysql --defaults-file=$mycnf -e 'SELECT VERSION()' > $mysql_out 2>&1
3030
if [ '0' -ne "$?" ]; then
3131
if [ "$notify" != 'no' ]; then
32-
echo -e "Can't connect to MySQL $HOST\n$(cat $err)" |\
32+
echo -e "Can't connect to MySQL $HOST\n$(cat $mysql_out)" |\
3333
$SENDMAIL -s "$subj" $email
3434
fi
35+
rm -f $mysql_out
3536
echo "Error: Connection to $HOST failed"
3637
log_event "$E_CONNECT" "$ARGUMENTS"
3738
exit $E_CONNECT
3839
fi
40+
mysql_ver=$(cat $mysql_out |tail -n1 |cut -f 1 -d -)
41+
rm -f $mysql_out
3942
}
4043

4144
mysql_query() {
@@ -199,9 +202,13 @@ add_mysql_database() {
199202
IDENTIFIED BY '$dbpass'"
200203
mysql_query "$query" > /dev/null
201204

202-
query="SHOW GRANTS FOR \`$dbuser\`"
203-
md5=$(mysql_query "$query" 2>/dev/null)
204-
md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
205+
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then
206+
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
207+
md5=$(echo "$md5" |grep password |cut -f8 -d \')
208+
else
209+
md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
210+
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
211+
fi
205212
}
206213

207214
# Create PostgreSQL database

func/rebuild.sh

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -531,44 +531,20 @@ rebuild_mail_domain_conf() {
531531

532532
# Rebuild MySQL
533533
rebuild_mysql_database() {
534-
535-
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
536-
eval $host_str
537-
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
538-
echo "Error: mysql config parsing failed"
539-
if [ ! -z "$SENDMAIL" ]; then
540-
echo "Can't parse MySQL DB config" | $SENDMAIL -s "$subj" $email
541-
fi
542-
log_event "$E_PARSING" "$ARGUMENTS"
543-
exit $E_PARSING
544-
fi
545-
546-
query='SELECT VERSION()'
547-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
548-
if [ '0' -ne "$?" ]; then
549-
echo "Error: Database connection to $HOST failed"
550-
if [ ! -z "$SENDMAIL" ]; then
551-
echo "Database connection to MySQL host $HOST failed" |\
552-
$SENDMAIL -s "$subj" $email
553-
fi
554-
log_event "$E_CONNECT" "$ARGUMENTS"
555-
exit $E_CONNECT
534+
mysql_connect $HOST
535+
mysql_query "CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET" >/dev/null
536+
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then
537+
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" >/dev/null
538+
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" >/dev/null
539+
query="UPDATE mysql.user SET authentication_string='$MD5'"
540+
query="$query WHERE User='$DBUSER'"
541+
else
542+
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
556543
fi
557-
558-
query="CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET"
559-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
560-
561-
query="GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@\`%\`"
562-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
563-
564-
query="GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@localhost"
565-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
566-
567-
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';"
568-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
569-
570-
query="FLUSH PRIVILEGES;"
571-
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
544+
mysql_query "GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@\`%\`" >/dev/null
545+
mysql_query "GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@localhost" >/dev/null
546+
mysql_query "$query" >/dev/null
547+
mysql_query "FLUSH PRIVILEGES" >/dev/null
572548
}
573549

574550
# Rebuild PostgreSQL

0 commit comments

Comments
 (0)