Skip to content

Commit c294568

Browse files
author
Till Brehm
committed
Merge branch '6593-database-connection-breaks-when-reconfiguring-the-master-database-details-on-master-or-single' into 'develop'
Resolve "Database connection breaks when reconfiguring the master database details on master or single node" Closes #6593 See merge request ispconfig/ispconfig3!1815
2 parents 496864a + ecc9b9e commit c294568

File tree

1 file changed

+23
-30
lines changed

1 file changed

+23
-30
lines changed

install/update.php

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -279,11 +279,33 @@
279279

280280
//* initialize the master DB, if we have a multiserver setup
281281
if($conf['mysql']['master_slave_setup'] == 'y') {
282+
//** Get MySQL root credentials
283+
$finished = false;
284+
do {
285+
$tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'],'mysql_master_hostname');
286+
$tmp_mysql_server_port = $inst->free_query('MySQL master server port', $conf['mysql']['master_port'],'mysql_master_port');
287+
$tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'],'mysql_master_root_user');
288+
$tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'],'mysql_master_root_password');
289+
$tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database');
290+
291+
//* Initialize the MySQL server connection
292+
if(@mysqli_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password, $tmp_mysql_server_database, (int)$tmp_mysql_server_port)) {
293+
$conf['mysql']['master_host'] = $tmp_mysql_server_host;
294+
$conf['mysql']['master_port'] = $tmp_mysql_server_port;
295+
$conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
296+
$conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
297+
$conf['mysql']['master_database'] = $tmp_mysql_server_database;
298+
$finished = true;
299+
} else {
300+
swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
301+
}
302+
} while ($finished == false);
303+
unset($finished);
282304

283305
// initialize the connection to the master database
284306
$inst->dbmaster = new db();
285307
if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
286-
$inst->dbmaster->setDBData($conf['mysql']["master_host"], $conf['mysql']["master_ispconfig_user"], $conf['mysql']["master_ispconfig_password"], $conf['mysql']["master_port"]);
308+
$inst->dbmaster->setDBData($conf['mysql']["master_host"], $conf['mysql']["master_admin_user"], $conf['mysql']["master_admin_password"], $conf['mysql']["master_port"]);
287309
$inst->dbmaster->setDBName($conf['mysql']["master_database"]);
288310
} else {
289311
$inst->dbmaster = $inst->db;
@@ -330,35 +352,6 @@
330352
$reconfigure_master_database_rights_answer = $inst->simple_query('Reconfigure Permissions in master database?', array('yes', 'no'), 'no','reconfigure_permissions_in_master_database');
331353

332354
if($reconfigure_master_database_rights_answer == 'yes') {
333-
//** Get MySQL root credentials, to upgrade the dbmaster connection.
334-
$finished = false;
335-
do {
336-
$tmp_mysql_server_host = $inst->free_query('MySQL master server hostname', $conf['mysql']['master_host'],'mysql_master_hostname');
337-
$tmp_mysql_server_port = $inst->free_query('MySQL master server port', $conf['mysql']['master_port'],'mysql_master_port');
338-
$tmp_mysql_server_admin_user = $inst->free_query('MySQL master server root username', $conf['mysql']['master_admin_user'],'mysql_master_root_user');
339-
$tmp_mysql_server_admin_password = $inst->free_query('MySQL master server root password', $conf['mysql']['master_admin_password'],'mysql_master_root_password');
340-
$tmp_mysql_server_database = $inst->free_query('MySQL master server database name', $conf['mysql']['master_database'],'mysql_master_database');
341-
342-
//* Initialize the MySQL server connection
343-
if(@mysqli_connect($tmp_mysql_server_host, $tmp_mysql_server_admin_user, $tmp_mysql_server_admin_password, $tmp_mysql_server_database, (int)$tmp_mysql_server_port)) {
344-
$conf['mysql']['master_host'] = $tmp_mysql_server_host;
345-
$conf['mysql']['master_port'] = $tmp_mysql_server_port;
346-
$conf['mysql']['master_admin_user'] = $tmp_mysql_server_admin_user;
347-
$conf['mysql']['master_admin_password'] = $tmp_mysql_server_admin_password;
348-
$conf['mysql']['master_database'] = $tmp_mysql_server_database;
349-
$finished = true;
350-
} else {
351-
swriteln($inst->lng('Unable to connect to mysql server').' '.mysqli_connect_error());
352-
}
353-
} while ($finished == false);
354-
unset($finished);
355-
356-
// initialize the connection to the master database
357-
$inst->dbmaster = new db();
358-
if($inst->dbmaster->linkId) $inst->dbmaster->closeConn();
359-
$inst->dbmaster->setDBData($conf['mysql']["master_host"], $conf['mysql']["master_admin_user"], $conf['mysql']["master_admin_password"], $conf['mysql']["master_port"]);
360-
$inst->dbmaster->setDBName($conf['mysql']["master_database"]);
361-
362355
$inst->grant_master_database_rights();
363356
}
364357
//}

0 commit comments

Comments
 (0)