Skip to content

Commit 39c5d8b

Browse files
author
vogelor
committed
Fixed a bug if a new server is added to a existing server-farm (pwd of the new user was empty)
1 parent d65d4f5 commit 39c5d8b

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

install/lib/installer_base.lib.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,11 @@ public function grant_master_database_rights() {
282282

283283
$hosts[$from_host]['user'] = $conf['mysql']['master_ispconfig_user'];
284284
$hosts[$from_host]['db'] = $conf['mysql']['master_database'];
285+
$hosts[$from_host]['pwd'] = $conf['mysql']['master_ispconfig_password'];
285286

286287
$hosts[$from_ip]['user'] = $conf['mysql']['master_ispconfig_user'];
287288
$hosts[$from_ip]['db'] = $conf['mysql']['master_database'];
289+
$hosts[$from_ip]['pwd'] = $conf['mysql']['master_ispconfig_password'];
288290
} else{
289291
/*
290292
* it is NOT a master-slave - Setup so we have to find out all clients and their
@@ -298,19 +300,28 @@ public function grant_master_database_rights() {
298300
foreach ($data as $item){
299301
$hosts[$item['Host']]['user'] = $item['User'];
300302
$hosts[$item['Host']]['db'] = $conf['mysql']['master_database'];
303+
$hosts[$item['Host']]['pwd'] = ''; // the user already exists, so we need no pwd!
301304
}
302305
}
303306

304307
if(is_array($hosts)) {
305308
foreach($hosts as $host => $value) {
306309
/*
307-
* Delete ISPConfig user in the master database, in case that it exists
310+
* If a pwd exists, this means, we have to add the new user (and his pwd).
311+
* if not, the user already exists and we do not need the pwd
308312
*/
309-
$query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '".$value['user']."'@'".$host."' ";
310-
if(!$this->dbmaster->query($query)) {
311-
$this->error('Unable to remove rights of user in master database: '.$value['db'].' Error: '.$this->dbmaster->errorMessage);
313+
if ($value['pwd'] != ''){
314+
$query = "CREATE USER '".$value['user']."'@'".$host."' IDENTIFIED BY '" . $value['pwd'] . "'";
315+
$this->dbmaster->query($query); // ignore the error
312316
}
313317

318+
/*
319+
* Try to delete all rights of the user in case that it exists.
320+
* In Case that it will not exist, do nothing (ignore the error!)
321+
*/
322+
$query = "REVOKE ALL PRIVILEGES, GRANT OPTION FROM '".$value['user']."'@'".$host."' ";
323+
$this->dbmaster->query($query); // ignore the error
324+
314325
//* Create the ISPConfig database user in the remote database
315326
$query = "GRANT SELECT ON ".$value['db'].".`server` TO '".$value['user']."'@'".$host."' ";
316327
if(!$this->dbmaster->query($query)) {

0 commit comments

Comments
 (0)