From 31ff583c5ed1a0a70b50d5e6e9521fe048b0ab41 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Mon, 14 Feb 2022 23:18:41 +0100 Subject: [PATCH 1/9] mysql connection via unix sockets (mysqli + PDO) --- src/Database/Database.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index f478d7993..effed6e5e 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -114,6 +114,7 @@ class Database $pass = trim($this->configCache->get('database', 'password')); $db = trim($this->configCache->get('database', 'database')); $charset = trim($this->configCache->get('database', 'charset')); + $socket = trim($this->configCache->get('database', 'socket')); if (!(strlen($server) && strlen($user))) { return false; @@ -125,7 +126,7 @@ class Database if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { $this->driver = self::PDO; - $connect = "mysql:host=" . $server . ";dbname=" . $db; + $connect = "mysql:host=" . $server . ";dbname=" . $db . ";unix_socket=" . $socket; if ($port > 0) { $connect .= ";port=" . $port; @@ -149,9 +150,9 @@ class Database $this->driver = self::MYSQLI; if ($port > 0) { - $this->connection = @new mysqli($server, $user, $pass, $db, $port); + $this->connection = @new mysqli($server, $user, $pass, $db, $port, $socket); } else { - $this->connection = @new mysqli($server, $user, $pass, $db); + $this->connection = @new mysqli($server, $user, $pass, $db, $socket); } if (!mysqli_connect_errno()) { From ff439272b9105ad2132c693e7a0947fff05b453d Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Sun, 20 Feb 2022 17:45:51 +0100 Subject: [PATCH 2/9] mysql connection via socket if location of mysqld.sock was specified --- src/Database/Database.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index effed6e5e..79415c9f4 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -126,7 +126,7 @@ class Database if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { $this->driver = self::PDO; - $connect = "mysql:host=" . $server . ";dbname=" . $db . ";unix_socket=" . $socket; + $connect = "mysql:host=" . $server . ";dbname=" . $db; if ($port > 0) { $connect .= ";port=" . $port; @@ -135,8 +135,12 @@ class Database if ($charset) { $connect .= ";charset=" . $charset; } - - try { + + if ($socket) { + $connect .= ";$unix_socket=" . $socket; + } + + try { $this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]); $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->pdo_emulate_prepares); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); @@ -150,9 +154,9 @@ class Database $this->driver = self::MYSQLI; if ($port > 0) { - $this->connection = @new mysqli($server, $user, $pass, $db, $port, $socket); + $this->connection = @new mysqli($server, $user, $pass, $db, $port); } else { - $this->connection = @new mysqli($server, $user, $pass, $db, $socket); + $this->connection = @new mysqli($server, $user, $pass, $db); } if (!mysqli_connect_errno()) { @@ -161,6 +165,11 @@ class Database if ($charset) { $this->connection->set_charset($charset); } + + if ($socket) { + $this->connection->set_socket($socket); + } + } } From 335be6f0326e15e80d4470179c69c2a4daae6ae3 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 12:09:12 +0100 Subject: [PATCH 3/9] Update src/Database/Database.php Correct indent Co-authored-by: Philipp --- src/Database/Database.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 79415c9f4..b5aed6c18 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -114,7 +114,7 @@ class Database $pass = trim($this->configCache->get('database', 'password')); $db = trim($this->configCache->get('database', 'database')); $charset = trim($this->configCache->get('database', 'charset')); - $socket = trim($this->configCache->get('database', 'socket')); + $socket = trim($this->configCache->get('database', 'socket')); if (!(strlen($server) && strlen($user))) { return false; From 470be2b5e40153682298b07d5220aba4414d47c2 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 12:09:30 +0100 Subject: [PATCH 4/9] Update src/Database/Database.php Correct indent Co-authored-by: Philipp --- src/Database/Database.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index b5aed6c18..885ece99f 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -135,12 +135,12 @@ class Database if ($charset) { $connect .= ";charset=" . $charset; } - - if ($socket) { - $connect .= ";$unix_socket=" . $socket; - } - - try { + + if ($socket) { + $connect .= ";$unix_socket=" . $socket; + } + + try { $this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]); $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->pdo_emulate_prepares); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); From 33c4fbf2a671fb0ba2e6133fccd42228e83576c0 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 12:09:54 +0100 Subject: [PATCH 5/9] Update src/Database/Database.php Correct indent Co-authored-by: Philipp --- src/Database/Database.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 885ece99f..920392a0f 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -165,10 +165,10 @@ class Database if ($charset) { $this->connection->set_charset($charset); } - - if ($socket) { - $this->connection->set_socket($socket); - } + + if ($socket) { + $this->connection->set_socket($socket); + } } } From 4492a091310ccc1e669f6127d47b3315618db100 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 12:57:16 +0100 Subject: [PATCH 6/9] add socket to env settings --- static/env.config.php | 1 + 1 file changed, 1 insertion(+) diff --git a/static/env.config.php b/static/env.config.php index 59271cb65..a83b85b52 100644 --- a/static/env.config.php +++ b/static/env.config.php @@ -26,6 +26,7 @@ return [ 'MYSQL_USERNAME' => ['database', 'username'], 'MYSQL_USER' => ['database', 'username'], 'MYSQL_PORT' => ['database', 'port'], + 'MYSQL_SOCKET' => ['database', 'socket'], 'MYSQL_PASSWORD' => ['database', 'password'], 'MYSQL_DATABASE' => ['database', 'database'], From 8a10b0c635ee478685274c962385fa6d283c34b1 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 15:01:02 +0100 Subject: [PATCH 7/9] add socket to database settings in the autoinstaller --- src/Console/AutomaticInstallation.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Console/AutomaticInstallation.php b/src/Console/AutomaticInstallation.php index e80cc6614..e3e9e22cb 100644 --- a/src/Console/AutomaticInstallation.php +++ b/src/Console/AutomaticInstallation.php @@ -64,6 +64,7 @@ Options -s|--savedb Save the DB credentials to the file (if environment variables is used) -H|--dbhost The host of the mysql/mariadb database (env MYSQL_HOST) -p|--dbport The port of the mysql/mariadb database (env MYSQL_PORT) + -s|--dbsocket The socket of the mysql/mariadb database (env MYSQL_SOCKET) -d|--dbdata The name of the mysql/mariadb database (env MYSQL_DATABASE) -u|--dbuser The username of the mysql/mariadb database login (env MYSQL_USER or MYSQL_USERNAME) -P|--dbpass The password of the mysql/mariadb database login (env MYSQL_PASSWORD) @@ -76,6 +77,7 @@ Options Environment variables MYSQL_HOST The host of the mysql/mariadb database (mandatory if mysql and environment is used) MYSQL_PORT The port of the mysql/mariadb database + MYSQL_SOCKET The socket of the mysql/mariadb database MYSQL_USERNAME|MYSQL_USER The username of the mysql/mariadb database login (MYSQL_USERNAME is for mysql, MYSQL_USER for mariadb) MYSQL_PASSWORD The password of the mysql/mariadb database login MYSQL_DATABASE The name of the mysql/mariadb database @@ -157,6 +159,7 @@ HELP; $db_host = $this->getOption(['H', 'dbhost'], ($save_db) ? (getenv('MYSQL_HOST')) : Installer::DEFAULT_HOST); $db_port = $this->getOption(['p', 'dbport'], ($save_db) ? getenv('MYSQL_PORT') : null); + $db_socket = $this->getOption(['s', 'dbsocket'], ($save_db) ? getenv('MYSQL_SOCKET') : null); $configCache->set('database', 'hostname', $db_host . (!empty($db_port) ? ':' . $db_port : '')); $configCache->set('database', 'database', $this->getOption(['d', 'dbdata'], From e4cfd4a7c312057820ea6feb98fed7f8d462fafb Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 16:09:54 +0100 Subject: [PATCH 8/9] Update src/Database/Database.php Co-authored-by: Hypolite Petovan --- src/Database/Database.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Database/Database.php b/src/Database/Database.php index 920392a0f..88d8d7d0f 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -136,11 +136,11 @@ class Database $connect .= ";charset=" . $charset; } - if ($socket) { - $connect .= ";$unix_socket=" . $socket; - } + if ($socket) { + $connect .= ";$unix_socket=" . $socket; + } - try { + try { $this->connection = @new PDO($connect, $user, $pass, [PDO::ATTR_PERSISTENT => $persistent]); $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, $this->pdo_emulate_prepares); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); From d1141c63fbe2d7b0432c54ddccfc80a66a0a72b2 Mon Sep 17 00:00:00 2001 From: k-alin <63866963+k-alin@users.noreply.github.com> Date: Fri, 25 Feb 2022 16:15:19 +0100 Subject: [PATCH 9/9] add socket to default settings in defaults.config.php --- static/defaults.config.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/defaults.config.php b/static/defaults.config.php index c31446cfe..97e4b0b54 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -37,6 +37,11 @@ return [ // Can be used instead of adding a port number to the hostname 'port' => null, + // socket (String) + // Socket of the database server. + // Can be used instead of adding a socket location to the hostname + 'socket' => '', + // user (String) // Database user name. Please don't use "root". 'username' => '',