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); } }