From 69ec85ef193f13dc2e04dcbc6f98300ba1367bf3 Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Mon, 14 Apr 2014 14:35:12 +0200 Subject: [PATCH] fix setting of passwords in case mysql-access-hosts list gets changed, fixes #1407 Signed-off-by: Michael Kaufmann (d00p) --- lib/classes/database/manager/class.DbManagerMySQL.php | 9 +++++++-- lib/functions/database/function.correctMysqlUsers.php | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/classes/database/manager/class.DbManagerMySQL.php b/lib/classes/database/manager/class.DbManagerMySQL.php index 805e4f50..bed0eadd 100644 --- a/lib/classes/database/manager/class.DbManagerMySQL.php +++ b/lib/classes/database/manager/class.DbManagerMySQL.php @@ -63,8 +63,9 @@ class DbManagerMySQL { * @param string $username * @param string $password * @param string $access_host + * @param bool $p_encrypted optional, whether the password is encrypted or not, default false */ - public function grantPrivilegesTo($username = null, $password = null, $access_host = null) { + public function grantPrivilegesTo($username = null, $password = null, $access_host = null, $p_encrypted = false) { // grant privileges $stmt = Database::prepare(" GRANT ALL PRIVILEGES ON `" . $username . "`.* @@ -72,7 +73,11 @@ class DbManagerMySQL { "); Database::pexecute($stmt, array("username" => $username, "host" => $access_host)); // set passoword - $stmt = Database::prepare("SET PASSWORD FOR :username@:host = PASSWORD(:password)"); + if ($p_encrypted) { + $stmt = Database::prepare("SET PASSWORD FOR :username@:host = :password"); + } else { + $stmt = Database::prepare("SET PASSWORD FOR :username@:host = PASSWORD(:password)"); + } Database::pexecute($stmt, array("username" => $username, "host" => $access_host, "password" => $password)); } diff --git a/lib/functions/database/function.correctMysqlUsers.php b/lib/functions/database/function.correctMysqlUsers.php index 167e05f7..f547784a 100644 --- a/lib/functions/database/function.correctMysqlUsers.php +++ b/lib/functions/database/function.correctMysqlUsers.php @@ -67,7 +67,7 @@ function correctMysqlUsers($mysql_access_host_array) { $mysql_access_host = trim($mysql_access_host); if (!in_array($mysql_access_host, $users[$username]['hosts'])) { - $dbm->getManager()->grantPrivilegesTo($username, $password, $mysql_access_host); + $dbm->getManager()->grantPrivilegesTo($username, $password, $mysql_access_host, true); } }