При переезде с MySQL на MariaDB получил ошибку при соединении с базой данных через localhost. Причем соединение по прямому loopback-адресу 127.0.0.1 выставлялось без проблем

tc@box:~$ grep mysqli_connect /usr/local/apache2/logs/bsd235-mariadb-error_log

PHP Warning: mysqli_connect(): (HY000/2002): No such file or directory in ...


Проблема оказалась в том, что соединение с базой данной на локальном компьютере происходит через локальный UNIX-сокет, а не через TCP-соединение. Соответственно, драйвер базы данных был скомпилирован с указанием следующего сокета /var/run/mysqld/mysqld.sock


Посмотреть этот параметр можно несколькими способами

  • MariaDB [postgres]> show variables like 'sock%'

    /var/run/mysqld/mysqld.sock

  • tc@box:~$ grep socket /etc/my.cnf

    socket = /var/run/mysqld/mysqld.sock

  • tc@box:~$ mysql --verbose --help | grep socket

    socket            /var/run/mysqld/mysqld.sock

Для решения данной проблемы достаточно явного задания местонахождения сокета в файле конфигурации PHP

tc@box:~$ egrep "mysql.*sock*" /usr/local/apache2/conf/php5/php.ini

pdo_mysql.default_socket =

mysql.default_socket =

mysqli.default_socket =

Или, как вариант, создание символьной ссылки на сокет

tc@box:~$ sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

tc@box:~$ ll /tmp

mysql.sock -> /var/run/mysqld/mysqld.sock

Запуск сервиса

tc@box:~$ /usr/local/mysql/bin/mysqld_safe &


Linux-7.2 box 4.2.9-tinycore i686 Fri Jun 19 19:42:12 YEKT 2020