Skip to content

Commit b3eeed5

Browse files
authored
Add support for mysql 8 in db.sh and rebuild.sh (hestiacp#2375)
Note: Mysql support is still missing for the installers!
1 parent 747bd13 commit b3eeed5

File tree

2 files changed

+114
-30
lines changed

2 files changed

+114
-30
lines changed

func/db.sh

Lines changed: 107 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -250,22 +250,60 @@ decrease_dbhost_values() {
250250
# Create MySQL database
251251
add_mysql_database() {
252252
mysql_connect $host
253+
254+
mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
255+
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
253256

254257
query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
255258
mysql_query "$query" > /dev/null
256259

257-
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
258-
IDENTIFIED BY '$dbpass'"
259-
mysql_query "$query" > /dev/null
260-
261-
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
262-
IDENTIFIED BY '$dbpass'"
263-
mysql_query "$query" > /dev/null
264-
265-
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then
266-
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
267-
md5=$(echo "$md5" |grep password |cut -f8 -d \')
260+
if [ "$mysql_fork" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ] ; then
261+
query="CREATE USER \`$dbuser\`@\`%\`
262+
IDENTIFIED BY '$dbpass'"
263+
mysql_query "$query" > /dev/null
264+
265+
query="CREATE USER \`$dbuser\`@localhost
266+
IDENTIFIED BY '$dbpass'"
267+
mysql_query "$query" > /dev/null
268+
269+
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`"
270+
mysql_query "$query" > /dev/null
271+
272+
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost"
273+
mysql_query "$query" > /dev/null
274+
else
275+
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
276+
IDENTIFIED BY '$dbpass'"
277+
mysql_query "$query" > /dev/null
278+
279+
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
280+
IDENTIFIED BY '$dbpass'"
281+
mysql_query "$query" > /dev/null
282+
fi
283+
284+
285+
286+
if [ "$mysql_fork" = "mysql" ]; then
287+
# mysql
288+
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
289+
if [ "$mysql_ver_sub" -ge 8 ]; then
290+
# mysql >= 8
291+
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
292+
# echo $md5
293+
md5=$(echo "$md5" |grep password |cut -f4 -d \')
294+
# echo $md5
295+
else
296+
# mysql < 8
297+
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
298+
md5=$(echo "$md5" |grep password |cut -f8 -d \')
299+
fi
300+
else
301+
# mysql < 5.7
302+
md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
303+
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
304+
fi
268305
else
306+
# mariadb
269307
md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
270308
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
271309
fi
@@ -330,23 +368,64 @@ get_database_values() {
330368

331369
# Change MySQL database password
332370
change_mysql_password() {
333-
mysql_connect $HOST
334-
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
335-
IDENTIFIED BY '$dbpass'"
336-
mysql_query "$query" > /dev/null
337-
338-
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
339-
IDENTIFIED BY '$dbpass'"
340-
mysql_query "$query" > /dev/null
341-
342-
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then
343-
344-
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
345-
md5=$(echo "$md5" |grep password |cut -f8 -d \')
346-
else
347-
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null)
348-
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
349-
fi
371+
mysql_connect $HOST
372+
373+
mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
374+
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
375+
376+
if [ "$mysql_fork" = "mysql" ]; then
377+
# mysql
378+
if [ "$mysql_ver_sub" -ge 8 ]; then
379+
# mysql >= 8
380+
query="SET PASSWORD FOR \`$DBUSER\`@\`%\` = '$dbpass'"
381+
mysql_query "$query" > /dev/null
382+
query="SET PASSWORD FOR \`$DBUSER\`@localhost = '$dbpass'"
383+
mysql_query "$query" > /dev/null
384+
else
385+
# mysql < 8
386+
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
387+
IDENTIFIED BY '$dbpass'"
388+
mysql_query "$query" > /dev/null
389+
390+
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
391+
IDENTIFIED BY '$dbpass'"
392+
mysql_query "$query" > /dev/null
393+
fi
394+
else
395+
# mariadb
396+
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
397+
IDENTIFIED BY '$dbpass'"
398+
mysql_query "$query" > /dev/null
399+
400+
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
401+
IDENTIFIED BY '$dbpass'"
402+
mysql_query "$query" > /dev/null
403+
fi
404+
405+
if [ "$mysql_fork" = "mysql" ]; then
406+
# mysql
407+
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
408+
if [ "$mysql_ver_sub" -ge 8 ]; then
409+
# mysql >= 8
410+
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
411+
# echo $md5
412+
md5=$(echo "$md5" |grep password |cut -f4 -d \')
413+
# echo $md5
414+
else
415+
# mysql < 8
416+
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
417+
md5=$(echo "$md5" |grep password |cut -f8 -d \')
418+
fi
419+
else
420+
# mysql < 5.7
421+
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null)
422+
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
423+
fi
424+
else
425+
# mariadb
426+
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null)
427+
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
428+
fi
350429
}
351430

352431
# Change PostgreSQL database password

func/rebuild.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,9 @@ rebuild_mysql_database() {
719719
mysql_query "CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET" >/dev/null
720720
if [ "$mysql_fork" = "mysql" ]; then
721721
# mysql
722-
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then
722+
mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
723+
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
724+
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
723725
# mysql >= 5.7
724726
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null
725727
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null
@@ -742,10 +744,13 @@ rebuild_mysql_database() {
742744
# mariadb = 10
743745
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\` IDENTIFIED BY PASSWORD '$MD5'" > /dev/null
744746
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost IDENTIFIED BY PASSWORD '$MD5'" > /dev/null
745-
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
746747
if [ "$mysql_ver_sub_sub" -ge 4 ]; then
748+
#mariadb >= 10.4
747749
query="SET PASSWORD FOR '$DBUSER'@'%' = '$MD5';"
748750
query2="SET PASSWORD FOR '$DBUSER'@'localhost' = '$MD5';"
751+
else
752+
#mariadb < 10.4
753+
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
749754
fi
750755
fi
751756
fi

0 commit comments

Comments
 (0)