/** * 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); } } }
/** * Get MySQL databases with specified prefix. * * @param string $prefix * * @return MysqlDatabaseModel[] */ public function getDatabases($prefix = '') { /** @var $dbs MysqlDatabaseModel[] */ $dbs = array(); $q = sprintf('show databases'); $result = $this->_mysqli->query($q); while ($row = $result->fetch_assoc()) { $db = new MysqlDatabaseModel(); $db->setName($row['Database']); if (!empty($prefix)) { if (substr($db->getName(), 0, strlen($prefix)) === $prefix) { $dbs[] = $db; } } else { $dbs[] = $db; } } return $dbs; }