From: Joas Schilling Date: Wed, 5 Feb 2020 09:05:11 +0000 (+0100) Subject: Only provide the auth method for MySQL 8.0+ to not break MariaDB X-Git-Tag: v16.0.10RC1~4^2~4 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=07e7f79a8e15a1ed33836c3866839e81963b4c73;p=nextcloud-server.git Only provide the auth method for MySQL 8.0+ to not break MariaDB Provide the auth method for MySQL 8.0+ Signed-off-by: Joas Schilling --- diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php index b66af448b44..964f16f3711 100644 --- a/lib/private/Setup/MySQL.php +++ b/lib/private/Setup/MySQL.php @@ -32,6 +32,7 @@ namespace OC\Setup; use OC\DB\MySqlTools; use OCP\IDBConnection; use OCP\ILogger; +use Doctrine\DBAL\Platforms\MySQL80Platform; class MySQL extends AbstractDatabase { public $dbprettyname = 'MySQL/MariaDB'; @@ -100,10 +101,18 @@ class MySQL extends AbstractDatabase { $password = $this->dbPassword; // we need to create 2 accounts, one for global use and one for local user. if we don't specify the local one, // the anonymous user would take precedence when there is one. - $query = "CREATE USER '$name'@'localhost' IDENTIFIED WITH mysql_native_password BY '$password'"; - $connection->executeUpdate($query); - $query = "CREATE USER '$name'@'%' IDENTIFIED WITH mysql_native_password BY '$password'"; - $connection->executeUpdate($query); + + if ($connection->getDatabasePlatform() instanceof Mysql80Platform) { + $query = "CREATE USER '$name'@'localhost' IDENTIFIED WITH mysql_native_password BY '$password'"; + $connection->executeUpdate($query); + $query = "CREATE USER '$name'@'%' IDENTIFIED WITH mysql_native_password BY '$password'"; + $connection->executeUpdate($query); + } else { + $query = "CREATE USER '$name'@'localhost' IDENTIFIED BY '$password'"; + $connection->executeUpdate($query); + $query = "CREATE USER '$name'@'%' IDENTIFIED BY '$password'"; + $connection->executeUpdate($query); + } } catch (\Exception $ex){ $this->logger->logException($ex, [