/** * Create a database and grant access to a (new) user * * @param Datasource $datasource * @param string $perm is not used */ public function createDatabase(Datasource $datasource, $perm = DatabaseManagementInterface::PERM_ADMIN) { $db = $datasource->getDatabase(); $user = $datasource->getUsername(); $pass = $datasource->getPassword(); $dbh = $this->adminDatasource->createPDO(); $dbh->exec("DROP DATABASE IF EXISTS \"{$db}\""); $dbh->exec("DROP ROLE IF EXISTS {$user}"); $dbh->exec("CREATE ROLE {$user} with encrypted password '{$pass}' login"); $dbh->exec("CREATE DATABASE \"{$db}\" owner {$user}"); }
/** * Create a database and grant access to a (new) user * * @param Datasource $datasource * @param string $perm PERM_SUPER, PERM_ADMIN */ public function createDatabase(Datasource $datasource, $perm = DatabaseManagementInterface::PERM_ADMIN) { $db = $datasource->getDatabase(); $user = $datasource->getUsername(); $pass = $datasource->getPassword(); $dbh = $this->adminDatasource->createPDO(); $dbh->exec("CREATE DATABASE `{$db}`"); switch ($perm) { case DatabaseManagementInterface::PERM_SUPER: $dbh->exec("GRANT ALL ON *.* to '{$user}'@'localhost' IDENTIFIED BY '{$pass}' WITH GRANT OPTION"); $dbh->exec("GRANT ALL ON *.* to '{$user}'@'%' IDENTIFIED BY '{$pass}' WITH GRANT OPTION"); break; case DatabaseManagementInterface::PERM_ADMIN: $dbh->exec("GRANT ALL ON `{$db}`.* to '{$user}'@'localhost' IDENTIFIED BY '{$pass}'"); $dbh->exec("GRANT ALL ON `{$db}`.* to '{$user}'@'%' IDENTIFIED BY '{$pass}'"); break; default: throw new \Exception("Unrecognized permission level"); } }
protected function createConfigFile($file, Datasource $datasource, $dataDir) { $config = array('dsn' => $datasource->toPDODSN(), 'user' => $datasource->getUsername(), 'pass' => $datasource->getPassword(), 'dataDir' => $dataDir); $this->fs->dumpFile($file, "<?php\nreturn " . var_export($config, 1) . ";"); }