info('Mariadb install...'); exec('apt update 2>&1'); exec('apt install -y mariadb-server mariadb-client 2>&1'); if (Install::isReady('mariadb-server mariadb-client')) { $this->info('Mariadb setup...'); // generate password $generator = new ComputerPasswordGenerator(); $generator->setRandomGenerator(new Php7RandomGenerator()) ->setUppercase() ->setLowercase() ->setUppercase() ->setNumbers() ->setSymbols(false) ->setLength(self::PASSWORD_LENGTH); // getting password for root $password = $generator->generatePasswords()[0]; // remove plugin for root and set password exec('sudo mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD(\''.$password.'\') WHERE User=\'root\';"'); exec('sudo mysql -u root -e "UPDATE mysql.user SET plugin=\'\' where User=\'root\';"'); // delete anonymous user exec('sudo mysql -u root -e "DELETE FROM mysql.user WHERE User=\'\';"'); // make sure root can only access from local exec('sudo mysql -u root -e "DELETE FROM mysql.user WHERE User=\'root\' AND Host NOT IN (\'localhost\', \'127.0.0.1\', \'::1\');"'); // drop test database and anthing familiar exec('sudo mysql -u root -e "DROP DATABASE IF EXISTS test;"'); exec('sudo mysql -u root -e "DELETE FROM mysql.db WHERE Db=\'test\' OR Db=\'test_%\';"'); // update privileges exec('sudo mysql -u root -e "FLUSH PRIVILEGES;"'); $this->info('Success! \o/ Check /root/mcp.log'); file_put_contents(self::MCP_LOG_FILE, "Mariadb installed\nuser: root\npassword: $password\n--\n", FILE_APPEND); } else { $this->error('Failed!'); } } }