diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php
index 8b04844e22d45d5a964bad69777d2f6f4651fbc9..24cad9a87197a4fe144e840aa0eb3b70acc7b2f7 100644
--- a/server/plugins-available/mysql_clientdb_plugin.inc.php
+++ b/server/plugins-available/mysql_clientdb_plugin.inc.php
@@ -680,7 +680,19 @@ class mysql_clientdb_plugin {
 			}
 
 			if($data['new']['database_password'] != $data['old']['database_password'] && $data['new']['database_password'] != '') {
-				$link->query("SET PASSWORD FOR '".$link->escape_string($data['new']['database_user'])."'@'$db_host' = '".$link->escape_string($data['new']['database_password'])."';");
+				$result = $app->db->queryOneRecord("SELECT VERSION() as version");
+				$dbversion = $result['version'];
+
+				if (version_compare($dbversion, '5.7') >= 0) {
+					$query = sprintf("ALTER USER IF EXISTS '%s'@'%s' IDENTIFIED WITH mysql_native_password AS '%s';",
+							$link->escape_string($data['new']['database_user']),
+							$db_host,
+							$link->escape_string($data['new']['database_password']));
+					$link->query($query);
+				}
+				else {
+					$link->query("SET PASSWORD FOR '".$link->escape_string($data['new']['database_user'])."'@'$db_host' = '".$link->escape_string($data['new']['database_password'])."';");
+				}
 				$app->log('Changing MySQL user password for: '.$data['new']['database_user'].'@'.$db_host, LOGLEVEL_DEBUG);
 			}
 		}