From 456875905dad5173f2221ea85356b7f352c6a940 Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Tue, 4 Dec 2018 19:52:18 +0100 Subject: [PATCH] set password compatibility for mysql8 Signed-off-by: Michael Kaufmann --- .../database/manager/class.DbManagerMySQL.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/classes/database/manager/class.DbManagerMySQL.php b/lib/classes/database/manager/class.DbManagerMySQL.php index 835ff662..8601cadb 100644 --- a/lib/classes/database/manager/class.DbManagerMySQL.php +++ b/lib/classes/database/manager/class.DbManagerMySQL.php @@ -67,7 +67,7 @@ class DbManagerMySQL { */ public function grantPrivilegesTo($username = null, $password = null, $access_host = null, $p_encrypted = false) { // mysql8 compatibility - if (Database::getAttribute(PDO::ATTR_SERVER_VERSION) >= '8.0.0') { + if (version_compare(Database::getAttribute(PDO::ATTR_SERVER_VERSION), '8.0.11', '>=')) { // create user $stmt = Database::prepare(" CREATE USER '" . $username . "'@'" . $access_host . "' IDENTIFIED BY 'password' @@ -86,10 +86,14 @@ class DbManagerMySQL { Database::pexecute($stmt, array("username" => $username, "host" => $access_host)); } // set passoword - if ($p_encrypted) { - $stmt = Database::prepare("SET PASSWORD FOR :username@:host = :password"); + if (version_compare(Database::getAttribute(PDO::ATTR_SERVER_VERSION), '5.7.6', '<')) { + if ($p_encrypted) { + $stmt = Database::prepare("SET PASSWORD FOR :username@:host = :password"); + } else { + $stmt = Database::prepare("SET PASSWORD FOR :username@:host = PASSWORD(:password)"); + } } else { - $stmt = Database::prepare("SET PASSWORD FOR :username@:host = PASSWORD(:password)"); + $stmt = Database::prepare("ALTER USER :username@:host IDENTIFIED BY :password"); } Database::pexecute($stmt, array("username" => $username, "host" => $access_host, "password" => $password)); }