MySQL подключение к сокету

Post Reply
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

MySQL подключение к сокету

Post by magicum »

Иимеется PHP 7.4
Percona 8.0.25

Смарт не может подключиться к MySQL по сокету.

Сокет задаём в config.php как:

Code: Select all

$config["db_server"] = '/var/run/mysqld/mysqld.sock';
===

После проверки файла includes/db-modules/mysql.php обнаружено странное:

Code: Select all

    if (isset($config["db_persistent"]) and $config["db_persistent"]) {
        $$link = @mysqli_connect('p:' . $config["db_server"], $config["db_username"], $config["db_password"], $config["db_database"], ($config["db_port"]) ? $config["db_port"] : 3306);
    } else {

      if ($config["db_server"][0] == '/')  { // socket

     $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);

      } else {

        $$link = @mysqli_connect($config["db_server"], $config["db_username"], $config["db_password"], $config["db_database"], ($config["db_port"]) ? $config["db_port"] : 3306);

      }
Если сокет, то не надо юзернейма и пароля, правда ведь? :D


Рабочий вариант вот:

Code: Select all

//              $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);
        $$link = @mysqli_connect('localhost', $config["db_username"], $config["db_password"], $config["db_database"], NULL, $config["db_server"]);
И да, в порт обязательно ставить NULL в этом случае, с пустотой промеж кавычек не работает, я проверял.

Также, весьма странная обработка db_persistent.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL подключение к сокету

Post by admin »

не совсем понял

"Если сокет, то не надо юзернейма и пароля, правда ведь? "

как это?

а что именно странно в персистент?
Don't forget to run script update
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL подключение к сокету

Post by admin »

magicum wrote: Fri Aug 27, 2021 4:36 am Если сокет, то не надо юзернейма и пароля, правда ведь? :D
нет, не правда, нужен в любом случае
Don't forget to run script update
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

Re: MySQL подключение к сокету

Post by magicum »

admin wrote: Fri Aug 27, 2021 4:51 am нет, не правда, нужен в любом случае
Разумеется, нужен. То был сарказм.

В оригинальном файле mysql.php они пропущены. Почему - не знаю.

Code: Select all

      if ($config["db_server"][0] == '/')  { // socket

     $$link = @mysqli_connect('', '', '', $config["db_database"], '', $config["db_server"]);

      }
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

Re: MySQL подключение к сокету

Post by magicum »

>> а что именно странно в персистент?
В оригинальном файле mysql.php идёт проверка, что если указан персистент то подключаться только к порту.

Ну это же ваш код, не я ж его придумал.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL подключение к сокету

Post by admin »

Действительно пропущено, а почему так - сам не знаю.
Поправил в апе.
Don't forget to run script update
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

Re: MySQL подключение к сокету

Post by magicum »

Спасибо. А персистент?
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL подключение к сокету

Post by admin »

тоже добавил)
Don't forget to run script update
magicum
Posts: 351
Joined: Mon Nov 18, 2013 11:27 am

Re: MySQL подключение к сокету

Post by magicum »

Спасибо.
admin
Site Admin
Posts: 37994
Joined: Wed Sep 10, 2008 11:43 am

Re: MySQL подключение к сокету

Post by admin »

NP)
Don't forget to run script update
Post Reply