diff --git a/lib/private/setup.php b/lib/private/setup.php
index afc88256da4533d1ee41aa0c07780980fa7d935f..8f1ae389e45e9bd37eb736a5a2026e3fbd1ec747 100644
--- a/lib/private/setup.php
+++ b/lib/private/setup.php
@@ -89,7 +89,7 @@ class Setup {
 	 * @param string $name
 	 * @return bool
 	 */
-	public function class_exists($name) {
+	protected function class_exists($name) {
 		return class_exists($name);
 	}
 
@@ -98,10 +98,19 @@ class Setup {
 	 * @param string $name
 	 * @return bool
 	 */
-	public function is_callable($name) {
+	protected function is_callable($name) {
 		return is_callable($name);
 	}
 
+	/**
+	 * Wrapper around \PDO::getAvailableDrivers
+	 *
+	 * @return array
+	 */
+	protected function getAvailableDbDriversForPdo() {
+		return \PDO::getAvailableDrivers();
+	}
+
 	/**
 	 * Get the available and supported databases of this instance
 	 *
@@ -117,8 +126,8 @@ class Setup {
 				'name' => 'SQLite'
 			),
 			'mysql' => array(
-				'type' => 'function',
-				'call' => 'mysql_connect',
+				'type' => 'pdo',
+				'call' => 'mysql',
 				'name' => 'MySQL/MariaDB'
 			),
 			'pgsql' => array(
@@ -147,10 +156,15 @@ class Setup {
 		foreach($configuredDatabases as $database) {
 			if(array_key_exists($database, $availableDatabases)) {
 				$working = false;
-				if($availableDatabases[$database]['type'] === 'class') {
-					$working = $this->class_exists($availableDatabases[$database]['call']);
-				} elseif ($availableDatabases[$database]['type'] === 'function') {
-					$working = $this->is_callable($availableDatabases[$database]['call']);
+				$type = $availableDatabases[$database]['type'];
+				$call = $availableDatabases[$database]['call'];
+
+				if($type === 'class') {
+					$working = $this->class_exists($call);
+				} elseif ($type === 'function') {
+					$working = $this->is_callable($call);
+				} elseif($type === 'pdo') {
+					$working = in_array($call, $this->getAvailableDbDriversForPdo(), TRUE);
 				}
 				if($working) {
 					$supportedDatabases[$database] = $availableDatabases[$database]['name'];
diff --git a/tests/lib/setup.php b/tests/lib/setup.php
index fa9fe08ed954733911ab8627a8b754d38e0a152c..72c845200563bba81d29a42c458cb65e54f2d754 100644
--- a/tests/lib/setup.php
+++ b/tests/lib/setup.php
@@ -35,7 +35,7 @@ class Test_OC_Setup extends \Test\TestCase {
 		$this->logger = $this->getMock('\OCP\ILogger');
 		$this->random = $this->getMock('\OCP\Security\ISecureRandom');
 		$this->setupClass = $this->getMock('\OC\Setup',
-			['class_exists', 'is_callable'],
+			['class_exists', 'is_callable', 'getAvailableDbDriversForPdo'],
 			[$this->config, $this->iniWrapper, $this->l10n, $this->defaults, $this->logger, $this->random]);
 	}
 
@@ -51,9 +51,13 @@ class Test_OC_Setup extends \Test\TestCase {
 			->method('class_exists')
 			->will($this->returnValue(true));
 		$this->setupClass
-			->expects($this->exactly(2))
+			->expects($this->once())
 			->method('is_callable')
 			->will($this->returnValue(false));
+		$this->setupClass
+			->expects($this->once())
+			->method('getAvailableDbDriversForPdo')
+			->will($this->returnValue([]));
 		$result = $this->setupClass->getSupportedDatabases();
 		$expectedResult = array(
 			'sqlite' => 'SQLite'
@@ -74,9 +78,13 @@ class Test_OC_Setup extends \Test\TestCase {
 			->method('class_exists')
 			->will($this->returnValue(false));
 		$this->setupClass
-			->expects($this->exactly(3))
+			->expects($this->exactly(2))
 			->method('is_callable')
 			->will($this->returnValue(false));
+		$this->setupClass
+			->expects($this->once())
+			->method('getAvailableDbDriversForPdo')
+			->will($this->returnValue([]));
 		$result = $this->setupClass->getSupportedDatabases();
 
 		$this->assertSame(array(), $result);
@@ -94,9 +102,13 @@ class Test_OC_Setup extends \Test\TestCase {
 			->method('class_exists')
 			->will($this->returnValue(true));
 		$this->setupClass
-			->expects($this->exactly(3))
+			->expects($this->exactly(2))
 			->method('is_callable')
 			->will($this->returnValue(true));
+		$this->setupClass
+			->expects($this->once())
+			->method('getAvailableDbDriversForPdo')
+			->will($this->returnValue(['mysql']));
 		$result = $this->setupClass->getSupportedDatabases();
 		$expectedResult = array(
 			'sqlite' => 'SQLite',