From 41dd8eb97639fa0dd1574ffdbcb4c115f8dc4ee6 Mon Sep 17 00:00:00 2001 From: Marius Burkard Date: Thu, 2 Mar 2017 15:26:28 +0100 Subject: [PATCH] - backported mysql password change fix from master --- .../mysql_clientdb_plugin.inc.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php index f8763b0a86..804bdbaa74 100644 --- a/server/plugins-available/mysql_clientdb_plugin.inc.php +++ b/server/plugins-available/mysql_clientdb_plugin.inc.php @@ -686,8 +686,26 @@ 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'])."';"); - $app->log('Changing MySQL user password for: '.$data['new']['database_user'].'@'.$db_host, LOGLEVEL_DEBUG); + $result = $app->db->queryOneRecord("SELECT VERSION() as version"); + $dbversion = $result['version']; + + // mariadb or mysql < 5.7 + if(stripos($dbversion, 'mariadb') !== false || version_compare($dbversion, '5.7', '<')) { + $query = sprintf("SET PASSWORD FOR '%s'@'%s' = '%s'", + $link->escape_string($data['new']['database_user']), + $db_host, + $link->escape_string($data['new']['database_password'])); + $link->query($query); + } + // mysql >= 5.7 + else { + $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); + } + $app->log('Changing MySQL user password for: ' . $data['new']['database_user'] . '@' . $db_host, LOGLEVEL_DEBUG); } } -- GitLab