/** * 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 user exists in MySQL. * * @param MysqlUserModel $user * * @return bool */ public function checkUserExists(MysqlUserModel $user) { $q = sprintf('SELECT User, Host FROM mysql.user WHERE User = "******" AND Host = "%s"', $user->getUsername(), $user->getHost()); $result = $this->_mysqli->query($q); if ($result->num_rows > 0) { return true; } return false; }