/** * Create MySQL databases, users and grant permissions. */ public function createDatabases() { /** @var $dbs MysqlDatabase[] */ $dbs = $this->_getRepository()->findAll(); foreach ($dbs as $db) { $userModel = new MysqlUserModel(); $userModel->setUsername($db->getName())->setPassword($this->_cryptservice->decrypt($db->getPassword())); $dbModel = new MysqlDatabaseModel(); $dbModel->setName($db->getName())->setUsers(array($userModel)); if ($this->_mysqladmin->checkUserExists($userModel)) { $this->_mysqladmin->setUserPassword($userModel); } else { $this->_mysqladmin->createUser($userModel); } if (!$this->_mysqladmin->checkDatabaseExists($dbModel)) { $this->_mysqladmin->createDatabase($dbModel); $this->_mysqladmin->grantPermissionsOnDatabase($dbModel); } } }
/** * Checks, if a specified database exists in MySQL. * * @param MysqlDatabaseModel $database * * @return bool */ public function checkDatabaseExists(MysqlDatabaseModel $database) { $q = sprintf('show databases'); $result = $this->_mysqli->query($q); while ($row = $result->fetch_assoc()) { if ($row['Database'] === $database->getName()) { return true; } } return false; }