Skip to content

Commit d70dc80

Browse files
author
Till Brehm
committed
Merge branch '4321-mysql-user-password-update' into 'master'
fixed mysql password update on mysql > 5.7 See issue #4321 Closes #4321 See merge request !533
2 parents e606038 + b8533a6 commit d70dc80

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

server/plugins-available/mysql_clientdb_plugin.inc.php

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,8 +680,34 @@ function db_user_update($event_name, $data) {
680680
}
681681

682682
if($data['new']['database_password'] != $data['old']['database_password'] && $data['new']['database_password'] != '') {
683-
$link->query("SET PASSWORD FOR '".$link->escape_string($data['new']['database_user'])."'@'$db_host' = '".$link->escape_string($data['new']['database_password'])."';");
684-
$app->log('Changing MySQL user password for: '.$data['new']['database_user'].'@'.$db_host, LOGLEVEL_DEBUG);
683+
$result = $app->db->queryOneRecord("SELECT VERSION() as version");
684+
$dbversion = $result['version'];
685+
686+
// mariadb
687+
if(stripos($dbversion, 'mariadb') !== false) {
688+
$query = sprintf("SET PASSWORD FOR '%s'@'%s' = '%s'",
689+
$link->escape_string($data['new']['database_user']),
690+
$db_host,
691+
$link->escape_string($data['new']['database_password']));
692+
$link->query($query);
693+
}
694+
// mysql
695+
else {
696+
if (version_compare($dbversion, '5.7') >= 0) {
697+
$query = sprintf("ALTER USER IF EXISTS '%s'@'%s' IDENTIFIED WITH mysql_native_password AS '%s'",
698+
$link->escape_string($data['new']['database_user']),
699+
$db_host,
700+
$link->escape_string($data['new']['database_password']));
701+
$link->query($query);
702+
} else {
703+
$query = sprintf("SET PASSWORD FOR '%s'@'%s' = '%s'",
704+
$link->escape_string($data['new']['database_user']),
705+
$db_host,
706+
$link->escape_string($data['new']['database_password']));
707+
$link->query($query);
708+
}
709+
$app->log('Changing MySQL user password for: ' . $data['new']['database_user'] . '@' . $db_host, LOGLEVEL_DEBUG);
710+
}
685711
}
686712
}
687713

0 commit comments

Comments
 (0)