diff --git a/func/db.sh b/func/db.sh index 1373d741..deb9e5b8 100644 --- a/func/db.sh +++ b/func/db.sh @@ -202,21 +202,57 @@ decrease_dbhost_values() { add_mysql_database() { mysql_connect $host + mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1) + mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2) + query="CREATE DATABASE \`$database\` CHARACTER SET $charset" mysql_query "$query" > /dev/null - query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\` - IDENTIFIED BY '$dbpass'" - mysql_query "$query" > /dev/null + if [ "$mysql_fork" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ] ; then + query="CREATE USER \`$dbuser\`@\`%\` + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null - query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost - IDENTIFIED BY '$dbpass'" - mysql_query "$query" > /dev/null + query="CREATE USER \`$dbuser\`@localhost + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null - if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then - md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null) - md5=$(echo "$md5" |grep password |cut -f8 -d \') + query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`" + mysql_query "$query" > /dev/null + + 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 + + query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null + fi + + if [ "$mysql_fork" = "mysql" ]; then + # mysql + if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then + if [ "$mysql_ver_sub" -ge 8 ]; then + # mysql >= 8 + md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null) + # echo $md5 + md5=$(echo "$md5" |grep password |cut -f4 -d \') + # echo $md5 + else + # mysql < 8 + md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null) + md5=$(echo "$md5" |grep password |cut -f8 -d \') + fi + else + # mysql < 5.7 + md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null) + md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') + fi + else + # mariadb md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null) md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') fi @@ -267,22 +303,63 @@ get_database_values() { # Change MySQL database password change_mysql_password() { mysql_connect $HOST - query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\` - IDENTIFIED BY '$dbpass'" - mysql_query "$query" > /dev/null - - 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 - - md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null) - md5=$(echo "$md5" |grep password |cut -f8 -d \') -else - md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null) - md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') -fi + mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1) + mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2) + + if [ "$mysql_fork" = "mysql" ]; then + # mysql + if [ "$mysql_ver_sub" -ge 8 ]; then + # mysql >= 8 + query="SET PASSWORD FOR \`$DBUSER\`@\`%\` = '$dbpass'" + mysql_query "$query" > /dev/null + query="SET PASSWORD FOR \`$DBUSER\`@localhost = '$dbpass'" + mysql_query "$query" > /dev/null + else + # mysql < 8 + query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\` + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null + + query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null + fi + else + # mariadb + query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\` + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null + + query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost + IDENTIFIED BY '$dbpass'" + mysql_query "$query" > /dev/null + fi + + if [ "$mysql_fork" = "mysql" ]; then + # mysql + if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then + if [ "$mysql_ver_sub" -ge 8 ]; then + # mysql >= 8 + md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null) + # echo $md5 + md5=$(echo "$md5" |grep password |cut -f4 -d \') + # echo $md5 + else + # mysql < 8 + md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null) + md5=$(echo "$md5" |grep password |cut -f8 -d \') + fi + else + # mysql < 5.7 + md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null) + md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') + fi + else + # mariadb + md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null) + md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') + fi } # Change PostgreSQL database password diff --git a/func/rebuild.sh b/func/rebuild.sh index eeef03ee..b4a5f73d 100644 --- a/func/rebuild.sh +++ b/func/rebuild.sh @@ -556,12 +556,15 @@ rebuild_mysql_database() { mysql_query "CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET" >/dev/null if [ "$mysql_fork" = "mysql" ]; then # mysql - if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then + mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1) + mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2) + if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then # mysql >= 5.7 - mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null - mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null - query="UPDATE mysql.user SET authentication_string='$MD5'" - query="$query WHERE User='$DBUSER'" + # if [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; then + mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null + mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null + query="UPDATE mysql.user SET authentication_string='$MD5'" + query="$query WHERE User='$DBUSER'" else # mysql < 5.7 query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'" @@ -579,10 +582,13 @@ rebuild_mysql_database() { # mariadb = 10 mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null - query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'" if [ "$mysql_ver_sub_sub" -ge 4 ]; then + # mariadb >= 10.4 query="SET PASSWORD FOR '$DBUSER'@'%' = '$MD5';" query2="SET PASSWORD FOR '$DBUSER'@'localhost' = '$MD5';" + else + # mariadb < 10.4 + query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'" fi fi fi