private function testMysqlServer() { $good = false; do { echo "Name of connection into configuration/db.config.ini.php : [pmacontrol]\n"; $hostname = trim($this->prompt('Hostname/IP of MySQL [default : 127.0.0.1] : ')); $port = trim($this->prompt('Port of MySQL [default : 3306] : ')); if (empty($port)) { $port = 3306; } if (empty($hostname)) { $hostname = "127.0.0.1"; } $fp = @fsockopen($hostname, $port, $errno, $errstr, 30); if (!$fp) { echo Color::getColoredString("{$errstr} ({$errno})", "grey", "red") . "\n"; echo "MySQL server : " . $hostname . ":" . $port . " -> " . Color::getColoredString("KO", "grey", "red") . "\n"; echo str_repeat("-", 80) . "\n"; } else { $this->cmd("echo 1", "MySQL server : " . $hostname . ":" . $port . " available"); fclose($fp); $good = true; } } while ($good === false); //login & password mysql $good = false; do { echo "MySQL account on (" . $hostname . ":" . $port . ")\n"; $rl = new Hoa\Console\Readline\Readline(); $user = $rl->readLine('User [default : root] : '); $rl = new Hoa\Console\Readline\Password(); $password = $rl->readLine('Password [default : (empty)] : '); if (empty($user)) { $user = "******"; } $link = mysqli_connect($hostname . ":" . $port, $user, trim($password)); if ($link) { $good = true; $this->cmd("echo 1", "Login/password for MySQL's server"); } else { echo Color::getColoredString('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error(), "grey", "red") . "\n"; //echo "credential (".$user." // ".$password.")\n"; echo str_repeat("-", 80) . "\n"; } sleep(1); } while ($good === false); //check TokuDB // $sql = "select count(1) as cpt from information_schema.engines where engine = 'TokuDB' and (SUPPORT = 'YES' OR SUPPORT = 'DEFAULT');"; $res = mysqli_query($link, $sql); while ($ob = mysqli_fetch_object($res)) { if ($ob->cpt !== "1") { echo Color::getColoredString('Engine "TokuDB" is not installed yet', "grey", "red") . "\n"; echo "To install TokuDB :\n"; echo "\t- Add : \"plugin-load-add=ha_tokudb.so\" in your my.cnf\n"; echo "\t- Disable transparent_hugepage : \"echo never > /sys/kernel/mm/transparent_hugepage/enabled\" \n"; echo "\t- Disable transparent_hugepage : \"echo never > /sys/kernel/mm/transparent_hugepage/defrag\" \n"; echo "\t- Restart MySQL server\n"; exit(2); } } //check Spider // $sql = "select count(1) as cpt from information_schema.engines where engine = 'SPIDER' and (SUPPORT = 'YES' OR SUPPORT = 'DEFAULT');"; $res = mysqli_query($link, $sql); while ($ob = mysqli_fetch_object($res)) { if ($ob->cpt !== "1") { echo Color::getColoredString('Engine "SPIDER" is not installed yet', "grey", "red") . "\n"; echo "To install Spider, run the install_spider.sql script, located in the share directory, for example, from the command line:\n\n"; echo "\tmysql -uroot -p < /usr/share/mysql/install_spider.sql\n"; echo "\n"; echo "or, from within mysql\n\n"; echo "\tsource /usr/share/mysql/install_spider.sql\n\n"; exit(2); } } wrong_db: $good = false; do { echo "Name of database who will be used by PmaConrol\n"; $rl = new Hoa\Console\Readline\Readline(); $database = $rl->readLine('Database [default : pmacontrol] : '); if (empty($database)) { $database = "pmacontrol"; } $sql = "SELECT count(1) as cpt FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '" . mysqli_real_escape_string($link, $database) . "'"; $result = mysqli_query($link, $sql); $ob = mysqli_fetch_object($result); if ($ob->cpt == "1") { echo Color::getColoredString('Database -> KO (this database already exist)', "grey", "red") . "\n"; echo str_repeat("-", 80) . "\n"; } else { $good = true; $this->cmd("echo 1", "Database's name"); } } while ($good === false); //create database $sql = "CREATE DATABASE " . mysqli_real_escape_string($link, $database) . ""; $res = mysqli_query($link, $sql); if ($res) { $this->cmd("echo 1", 'The database "' . mysqli_real_escape_string($link, $database) . '" has been created'); } else { echo Color::getColoredString('The database "' . mysqli_real_escape_string($link, $database) . '" couldn\'t be created', "black", "red") . "\n"; goto wrong_db; echo str_repeat("-", 80) . "\n"; } Crypt::$key = CRYPT_KEY; $passwd = Crypt::encrypt($password); $mysql['hostname'] = $hostname; $mysql['port'] = $port; $mysql['user'] = $user; $mysql['password'] = $passwd; $mysql['database'] = $database; return $mysql; }
public function after_edit_db() { $this->view = false; $db = $this->di['db']->sql(DB_DEFAULT); Crypt::$key = CRYPT_KEY; foreach ($this->di['db']->getAll() as $server) { $info_server = $this->di['db']->getParam($server); $data['mysql_server']['name'] = $server; $data['mysql_server']['ip'] = $info_server['hostname']; $data['mysql_server']['login'] = $info_server['user']; $data['mysql_server']['passwd'] = Crypt::encrypt($info_server['password']); $data['mysql_server']['port'] = empty($info_server['port']) ? 3306 : $info_server['port']; if (!$db->sql_save($data)) { debug($data); debug($db->sql_error()); exit; } else { echo $data['mysql_server']['name'] . PHP_EOL; } } }
public function updateServerList() { $this->view = false; $db = $this->di['db']->sql(DB_DEFAULT); $sql = "SELECT * FROM `mysql_server`"; $servers_mysql = $db->sql_fetch_yield($sql); $all_server = array(); foreach ($servers_mysql as $mysql) { $all_server[$mysql['name']] = $mysql; } Crypt::$key = CRYPT_KEY; $all = array(); foreach ($this->di['db']->getAll() as $server) { $all[] = $server; $info_server = $this->di['db']->getParam($server); $data = array(); if (!empty($all_server[$server])) { $data['mysql_server']['id'] = $all_server[$server]['id']; unset($all_server[$server]); } else { echo "Add : " . $server . " to monitoring\n"; //to update $data['mysql_server']['id_client'] = 1; $data['mysql_server']['id_environment'] = 1; } $data['mysql_server']['name'] = $server; $data['mysql_server']['ip'] = $info_server['hostname']; $data['mysql_server']['login'] = $info_server['user']; $data['mysql_server']['passwd'] = Crypt::encrypt($info_server['password']); $data['mysql_server']['port'] = empty($info_server['port']) ? 3306 : $info_server['port']; $data['mysql_server']['date_refresh'] = date('Y-m-d H:i:s'); $data['mysql_server']['is_monitored'] = 1; if (!empty($info_server['ssh_login'])) { $data['mysql_server']['ssh_login'] = Crypt::encrypt($info_server['ssh_login']); } if (!empty($info_server['ssh_password'])) { $data['mysql_server']['ssh_password'] = Crypt::encrypt($info_server['ssh_password']); } if (!$db->sql_save($data)) { debug($data); debug($db->sql_error()); exit; } else { //echo $data['mysql_server']['name'] . PHP_EOL; } } foreach ($all_server as $to_delete) { $sql = "DELETE FROM `mysql_server` WHERE id=" . $to_delete['id'] . ""; $db->sql_query($sql); echo "[Warning] Removed : " . $to_delete['name'] . " from monitoring\n"; } }
public function setPasswdPmaControl() { $this->view = false; do { fwrite(STDOUT, "Choose password for remote user pmacontrol\n"); $passwdpma = self::promptSilent("Enter new UNIX password:"******"Retype new UNIX password:"******"Sorry, passwords do not match\n\n", "red"); } } while ($passwdpma != $passwdpma2); Crypt::$key = CRYPT_KEY; $password_crypted = Crypt::encrypt($passwdpma); $file = "<?php\r\nif (! defined('PMACONTROL_PASSWD'))\r\n{\r\n define('PMACONTROL_PASSWD', '" . $password_crypted . "');\r\n}\r\n"; file_put_contents(CONFIG . "pmacontrol.config.php", $file); return $passwdpma; }