Да, вы можете.
Часть dsn
, которая является первым параметром конструктора PDO, не должна иметь имя базы данных. Вы можете просто использовать mysql:host=localhost
. Затем, если у вас есть необходимые права, вы можете использовать обычную команду SQL для создания базы данных и пользователей и т. Д.
Ниже приведен пример из install.php, он входит в систему с правами root, создает базу данных, пользователя и предоставляет пользователю все привилегии для новой созданной базы данных:
<?php
$host="localhost";
$root="root";
$root_password="rootpass";
$user='newuser';
$pass='newpass';
$db="newdb";
try {
$dbh = new PDO("mysql:host=$host", $root, $root_password);
$dbh->exec("CREATE DATABASE `$db`;
CREATE USER '$user'@'localhost' IDENTIFIED BY '$pass';
GRANT ALL ON `$db`.* TO '$user'@'localhost';
FLUSH PRIVILEGES;")
or die(print_r($dbh->errorInfo(), true));
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
?>