diff --git a/LibreNMS/IRCBot.php b/LibreNMS/IRCBot.php
index a7fac4269e..1a861c81e5 100644
--- a/LibreNMS/IRCBot.php
+++ b/LibreNMS/IRCBot.php
@@ -437,7 +437,7 @@ class IRCBot
private function chkdb()
{
if (!is_resource($this->sql)) {
- if (($this->sql = mysqli_connect($this->config['db_host'], $this->config['db_user'], $this->config['db_pass'])) != false && mysqli_select_db($this->sql, $this->config['db_name'])) {
+ if (($this->sql = mysqli_connect($this->config['db_host'], $this->config['db_user'], $this->config['db_pass'], null, $this->config['db_port'])) != false && mysqli_select_db($this->sql, $this->config['db_name'])) {
return true;
} else {
$this->log('Cannot connect to MySQL');
diff --git a/build-base.php b/build-base.php
index 501615421f..02b6d85c99 100755
--- a/build-base.php
+++ b/build-base.php
@@ -15,7 +15,7 @@ if ($sql_fh === false) {
exit(1);
}
-$database_link = mysqli_connect('p:'.$config['db_host'], $config['db_user'], $config['db_pass']);
+$database_link = mysqli_connect('p:'.$config['db_host'], $config['db_user'], $config['db_pass'], null, $config['db_port']);
if ($database_link === false) {
echo 'ERROR: Cannot connect to database: '.mysqli_error($database_link)."\n";
exit(1);
diff --git a/discovery-wrapper.py b/discovery-wrapper.py
index 024a9588dd..7d36498c39 100755
--- a/discovery-wrapper.py
+++ b/discovery-wrapper.py
@@ -87,16 +87,13 @@ except:
discovery_path = config['install_dir'] + '/discovery.php'
db_username = config['db_user']
db_password = config['db_pass']
+db_port = int(config['db_port'])
if config['db_host'][:5].lower() == 'unix:':
db_server = config['db_host']
db_port = 0
-elif ':' in config['db_host']:
- db_server = config['db_host'].rsplit(':')[0]
- db_port = int(config['db_host'].rsplit(':')[1])
else:
db_server = config['db_host']
- db_port = 0
db_dbname = config['db_name']
diff --git a/doc/Support/Configuration.md b/doc/Support/Configuration.md
index 731ff72bb3..a869369258 100644
--- a/doc/Support/Configuration.md
+++ b/doc/Support/Configuration.md
@@ -26,6 +26,7 @@ These are the configuration options you will need to use to specify to get start
```php
$config['db_host'] = '127.0.0.1';
+$config['db_port'] = 3306;
$config['db_user'] = '';
$config['db_pass'] = '';
$config['db_name'] = '';
diff --git a/html/install.php b/html/install.php
index 94fcf01b51..eb2d3b533d 100644
--- a/html/install.php
+++ b/html/install.php
@@ -28,10 +28,12 @@ $dbhost = @$_POST['dbhost'] ?: 'localhost';
$dbuser = @$_POST['dbuser'] ?: 'librenms';
$dbpass = @$_POST['dbpass'] ?: '';
$dbname = @$_POST['dbname'] ?: 'librenms';
+$dbport = @$_POST['dbport'] ?: 3306;
$config['db_host']=$dbhost;
$config['db_user']=$dbuser;
$config['db_pass']=$dbpass;
$config['db_name']=$dbname;
+$config['db_port']=$dbport;
$add_user = @$_POST['add_user'] ?: '';
$add_pass = @$_POST['add_pass'] ?: '';
@@ -40,7 +42,7 @@ $add_email = @$_POST['add_email'] ?: '';
// Check we can connect to MySQL DB, if not, back to stage 1 :)
if ($stage > 1) {
- $database_link = mysqli_connect('p:'.$dbhost, $dbuser, $dbpass, $dbname);
+ $database_link = mysqli_connect('p:'.$dbhost, $dbuser, $dbpass, $dbname, $dbport);
if (mysqli_connect_error()) {
$stage = 1;
$msg = "Couldn't connect to the database, please check your details
" . mysqli_connect_error();
@@ -253,6 +255,12 @@ if ($ext_loaded == 'no') {
+