Преглед изворни кода

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
Maksim Usmanov | Maks пре 7 година
родитељ
комит
4852e75bb1
1 измењених фајлова са 14 додато и 3 уклоњено
  1. 14 3
      func/db.sh

+ 14 - 3
func/db.sh

@@ -204,7 +204,16 @@ add_mysql_database() {
 
 
     query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
     query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
     mysql_query "$query" > /dev/null
     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\`@\`%\`
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
     mysql_query "$query" > /dev/null
     mysql_query "$query" > /dev/null
@@ -212,8 +221,10 @@ add_mysql_database() {
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
     mysql_query "$query" > /dev/null
     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=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
         md5=$(echo "$md5" |grep password |cut -f8 -d \')
         md5=$(echo "$md5" |grep password |cut -f8 -d \')
     else
     else