From 4852e75bb1e5a848ed67ac45f62cc9a23b2562e5 Mon Sep 17 00:00:00 2001 From: Maksim Usmanov | Maks Date: Sun, 13 Jan 2019 00:20:02 +0100 Subject: [PATCH] Mysql 8 Support This only works if default_authentication_plugin=mysql_native_password is setup So add it to Mysqld section [Mysqld] default_authentication_plugin=mysql_native_password --- func/db.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/func/db.sh b/func/db.sh index d397dfec2..1b216c536 100644 --- a/func/db.sh +++ b/func/db.sh @@ -204,7 +204,16 @@ add_mysql_database() { query="CREATE DATABASE \`$database\` CHARACTER SET $charset" mysql_query "$query" > /dev/null - +# This can be modified for mysql 5.7 for better compatibility + if [ "$(echo $mysql_ver |cut -d '.' -f1)" -eq 8 ]; then + query="CREATE USER IF NOT EXISTS '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';" + mysql_query "$query" > /dev/null + query="CREATE USER IF NOT EXISTS '$dbuser'@'%' IDENTIFIED BY '$dbpass';" + mysql_query "$query" > /dev/null + query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`" + query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost" + mysql_query "$query" > /dev/null + else query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\` IDENTIFIED BY '$dbpass'" mysql_query "$query" > /dev/null @@ -212,8 +221,10 @@ add_mysql_database() { query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost IDENTIFIED BY '$dbpass'" mysql_query "$query" > /dev/null - - if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then + fi + # for mysql 8 this will work only if mysql_native_password is enabled + # Not think yet how to add compatibility for new cached SHA-256 password system + if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ] || [ "$(echo $mysql_ver |cut -d '.' -f1)" -eq 8 ]; then md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null) md5=$(echo "$md5" |grep password |cut -f8 -d \') else