Просмотр исходного кода

Add support for PHPmyAdmin SSO support for Mysql 8 (#3539)

* Add support for mysql 8

* Fix test

* remove the test

* Fix #3520 phpMyAdmin configuration storage is not completely configured
Jaap Marcus 2 лет назад
Родитель
Сommit
c57708e219
3 измененных файлов с 101 добавлено и 34 удалено
  1. 16 3
      func/db.sh
  2. 42 17
      install/deb/phpmyadmin/pma.sh
  3. 43 14
      install/upgrade/manual/migrate_phpmyadmin.sh

+ 16 - 3
func/db.sh

@@ -360,9 +360,22 @@ add_pgsql_database() {
 
 add_mysql_database_temp_user() {
 	mysql_connect $host
-	query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
-    IDENTIFIED BY '$dbpass'"
-	mysql_query "$query" > /dev/null
+
+	mysql_ver_sub=$(echo $mysql_ver | cut -d '.' -f1)
+	mysql_ver_sub_sub=$(echo $mysql_ver | cut -d '.' -f2)
+
+	if [ "$mysql_fork" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ]; then
+		query="CREATE USER \`$dbuser\`@localhost
+			IDENTIFIED BY '$dbpass'"
+		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\`@localhost
+    		IDENTIFIED BY '$dbpass'"
+		mysql_query "$query" > /dev/null
+	fi
 }
 
 delete_mysql_database_temp_user() {

+ 42 - 17
install/deb/phpmyadmin/pma.sh

@@ -48,11 +48,11 @@ PMADB=phpmyadmin
 PMAUSER=pma
 
 #DROP USER and TABLE
-# mysql -uroot <<MYSQL_PMA1
-# DROP USER '$PMAUSER'@'localhost';
-# DROP DATABASE $PMADB;
-# FLUSH PRIVILEGES;
-# MYSQL_PMA1
+#mysql -uroot <<MYSQL_PMA1
+#DROP USER '$PMAUSER'@'localhost';
+#DROP DATABASE $PMADB;
+#FLUSH PRIVILEGES;
+#MYSQL_PMA1
 
 #CREATE PMA USER
 if [ -f '/usr/bin/mariadb' ]; then
@@ -60,19 +60,44 @@ if [ -f '/usr/bin/mariadb' ]; then
 else
 	mysql_server="mysql"
 fi
+mysql_out=$(mktemp)
+$mysql -e 'SELECT VERSION()' > $mysql_out
+mysql_ver=$(cat $mysql_out | tail -n1 | cut -f 1 -d -)
+mysql_ver_sub=$(echo $mysql_ver | cut -d '.' -f1)
+mysql_ver_sub_sub=$(echo $mysql_ver | cut -d '.' -f2)
 
-$mysql_server -uroot << MYSQL_PMA2
-CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
-CREATE DATABASE $PMADB;
-MYSQL_PMA2
-
-#GRANT PMA USE SOME RIGHTS
-$mysql_server -uroot << MYSQL_PMA3
-USE $PMADB;
-GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
-GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';
-FLUSH PRIVILEGES;
-MYSQL_PMA3
+if [ "$mysql" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ]; then
+	query="CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="CREATE DATABASE $PMADB;"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="FLUSH PRIVILEGES;"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+else
+	query="CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="CREATE DATABASE $PMADB;"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';"
+	$mysql_server -uroot -e "$query" > /dev/null
+
+	query="FLUSH PRIVILEGES;"
+	$mysql_server -uroot -e "$query" > /dev/null
+fi
 
 #MYSQL DB and TABLES ADDITION
 $mysql_server -uroot < "$HESTIA_INSTALL_DIR/phpmyadmin/create_tables.sql"

+ 43 - 14
install/upgrade/manual/migrate_phpmyadmin.sh

@@ -144,21 +144,50 @@ DROP DATABASE $PMADB;
 FLUSH PRIVILEGES;
 MYSQL_PMA1
 
-	echo '[ * ] Creating new user...'
 	#CREATE PMA USER
-	mysql -uroot << MYSQL_PMA2
-CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
-CREATE DATABASE $PMADB;
-MYSQL_PMA2
-
-	echo '[ * ] Creating new database...'
-	#GRANT PMA USE SOME RIGHTS
-	mysql -uroot << MYSQL_PMA3
-USE $PMADB;
-GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
-GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';
-FLUSH PRIVILEGES;
-MYSQL_PMA3
+	if [ -f '/usr/bin/mariadb' ]; then
+		mysql="mariadb"
+	else
+		mysql="mysql"
+	fi
+	mysql_out=$(mktemp)
+	$mysql -e 'SELECT VERSION()' > $mysql_out
+	mysql_ver=$(cat $mysql_out | tail -n1 | cut -f 1 -d -)
+	mysql_ver_sub=$(echo $mysql_ver | cut -d '.' -f1)
+	mysql_ver_sub_sub=$(echo $mysql_ver | cut -d '.' -f2)
+
+	if [ "$mysql" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ]; then
+		query="CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="CREATE DATABASE $PMADB;"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="FLUSH PRIVILEGES;"
+		$mysql -uroot -e "$query" > /dev/null
+
+	else
+		query="CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="CREATE DATABASE $PMADB;"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';"
+		$mysql -uroot -e "$query" > /dev/null
+
+		query="FLUSH PRIVILEGES;"
+		$mysql -uroot -e "$query" > /dev/null
+	fi
 
 	#MYSQL DB and TABLES ADDITION
 	mysql -uroot < $HESTIA_INSTALL_DIR/phpmyadmin/create_tables.sql