Php mysql server sock

Почему не получается подключиться к MySQL через сокет?

Здравствуйте. На Debian Jessie установил Nginx + PHP7-FPM + MariaDB 10. Пытаюсь выполнить тестовый скриптик:

 printf("Версия сервера MySQL: %s\n", $mysqli->server_info); $mysqli->close(); ?>
$mysqli = new mysqli(":/var/run/mysqld/mysqld.sock", "root", "password");
$mysqli = new mysqli("localhost:/var/run/mysqld/mysqld.sock", "root", "password");
$mysqli = new mysqli("localhost", "root", "password");

Подскажите, пожалуйста, каким образом заставить PHP обращаться к БД через сокет? Что-то не могу сообразить, в чём дело.

P.S. Сам файл сокета на месте:

# php-fpm7.0 —info | grep .default_socket
mysqli.default_socket => no value => no value
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

zoonman

У вас по факту сокет-файл находится в /run/mysqld/mysqld.sock, а вы присоедняетесь к /var/run/mysqld/mysqld.sock

Плюс читаем документацию, а там сокет идет последним параметром.
Часть первая, удостоверьтесь, что сокет файл в нужном месте. Подключитесь к MySQL и посмотрите, что у вас тут:
show variables like ‘socket’
У меня там /opt/local/var/run/mariadb-10.0/mysqld.sock.

Значит мне нужно исправить php.ini

; я ленивый, поэтому настраиваю все варианты подключений [MySQL] mysql.default_socket = /opt/local/var/run/mariadb-10.0/mysqld.sock [MySQLi] mysqli.default_socket = /opt/local/var/run/mariadb-10.0/mysqld.sock [Pdo_mysql] pdo_mysql.default_socket=/opt/local/var/run/mariadb-10.0/mysqld.sock

После этого ваши скрипты должны подключаться через сокет.

// здесь должно быть соединение через сокет $mysqli = new mysqli("localhost", "root", "password"); // можно принудительно указать путь к сокету // я очень не рекомендую так делать, // т.к. возможны проблемы с развертыванием ваших скриптов в других окружениях $mysqli = new mysqli("localhost", "root", "password", "db", 0, "/opt/local/var/run/mariadb-10.0/mysqld.sock");

Источник

MySQL socket and PHP (and other languages)

I also know python is 64-bit because math.log( sys.maxsize, 2 ) + 1 returns 64 . Originally I believe PHP could communicate with MySQL when I installed MySQL over yum , but that is version 5.1 and I wanted 5.5 (better InnoDB features). So I uninstalled MySQL 5.1 with yum then manually installed 5.5 using most of this guide. I can enter the MySQL monitor (CLI tool) and do everything such as create databases and tables and enter queries. Problem But when I try to interact MySQL with PHP. I get the following error:

Not connected : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) 
root@XXXXXXXXX:/usr/local/MySQL-python-1.2.3# python setup.py build running build running build_py copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb running build_ext building '_mysql' extension gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/include/mysql -I/usr/local/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -g -pipe -m64 -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 In file included from _mysql.c:36: /usr/include/mysql/my_config.h:422:1: warning: "HAVE_WCSCOLL" redefined In file included from /usr/local/include/python2.7/Python.h:8, from pymemcompat.h:10, from _mysql.c:29: /usr/local/include/python2.7/pyconfig.h:887:1: warning: this is the location of the previous definition gcc -pthread -shared build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib64 -lmysqlclient_r -lpthread -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so /usr/bin/ld: cannot find -lmysqlclient_r collect2: ld returned 1 exit status error: command 'gcc' failed with exit status 1 
# The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /var/lib/mysql/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 
[MySQL] ; Allow or prevent persistent links. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.allow-persistent mysql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.max-persistent mysql.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.max-links mysql.max_links = -1 ; Default port number for mysql_connect(). If unset, mysql_connect() will use ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; at MYSQL_PORT. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-port mysql.default_port = ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-socket mysql.default_socket = /var/lib/mysql/mysql.sock ; Default host for mysql_connect() (doesn't apply in safe mode). ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-host mysql.default_host = ; Default user for mysql_connect() (doesn't apply in safe mode). ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-user mysql.default_user = ; Default password for mysql_connect() (doesn't apply in safe mode). ; Note that this is generally a *bad* idea to store passwords in this file. ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") ; and reveal this password! And of course, any users with read access to this ; file will be able to reveal the password as well. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-password mysql.default_password = ; Maximum time (in seconds) for connect timeout. -1 means no limit ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.connect-timeout mysql.connect_timeout = 60 ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and ; SQL-Errors will be displayed. ; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.trace-mode mysql.trace_mode = Off 

Both the my.cnf and php.ini read /var/lib/mysql/mysql.sock . What is wrong with my configuration?? Thanks in advance for reading this long post! Edit Here are some new information: /var/lib/mysql shows the following content (once again I X’ed out my domain name):

total 29M drwx------ 6 mysql 4.0K Feb 2 13:25 ./ drwxr-xr-x. 52 root 4.0K Sep 23 07:50 ../ -rw-rw---- 1 mysql 18M Feb 2 15:04 ibdata1 -rw-rw---- 1 mysql 5.0M Feb 2 15:04 ib_logfile0 -rw-rw---- 1 mysql 5.0M Feb 2 12:03 ib_logfile1 drwx------ 2 mysql 4.0K Feb 2 15:04 mapshare/ drwx------ 2 mysql 4.0K Feb 2 11:20 mysql/ -rw-rw---- 1 mysql 906 Feb 2 12:58 mysql-bin.000001 -rw-rw---- 1 mysql 1.9K Feb 2 15:04 mysql-bin.000002 -rw-rw---- 1 mysql 38 Feb 2 12:59 mysql-bin.index srwxrwxrwx 1 mysql 0 Feb 2 12:59 mysql.sock drwx------ 2 mysql 4.0K Feb 2 11:20 performance_schema/ -rw-r--r-- 1 mysql 678 Feb 2 12:01 RPM_UPGRADE_HISTORY -rw-r--r-- 1 mysql 339 Feb 2 12:01 RPM_UPGRADE_MARKER-LAST -rw-rw---- 1 mysql 3.0K Feb 2 12:59 XXXXXXXXXX.err -rw-rw---- 1 mysql 6 Feb 2 12:59 XXXXXXXXXX.pid drwx------ 2 mysql 4.0K Feb 2 13:35 scoutmob/ 
+---------------+---------------------------+ | Variable_name | Value | +---------------+---------------------------+ | socket | /var/lib/mysql/mysql.sock | +---------------+---------------------------+ 1 row in set (0.00 sec) 
gcc (GCC) 4.4.6 20110731 (Red Hat 4.4.6-3) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
/usr/lib64/mysql/libmysqlclient_r.so.16 /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 /usr/lib64/mysql/libmysqlclient_r.a 

Источник

MySQL. Решение проблемы «/var/run/mysqld/mysqld.sock не найден»

Работая с базой данных MySQL, можно столкнуться с проблемой: при старте демона(сервиса) mysqld возвращается сообщение об ошибке (in english):

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[ERROR] Can't start server : Bind on unix socket: No such file or directory [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
sudo killall -9 mysqld sudo /etc/init.d/mysql start
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 1299 mysql 6u unix 0xf688b840 0t0 7877 /var/run/mysqld/mysqld.sock
. lsof: status error on /run/mysqld/mysqld.sock: No such file or directory .

— файл отсутствует. В первом случае всё ясно — либо так и надо, либо отключаем приложение, занявшее сокет. Во втором случае стоит создать сокет и/или сделать его доступным mysql, для этого выполняем:

sudo mkdir /var/run/mysqld sudo mkfifo /var/run/mysqld/mysqld.sock sudo chown -R mysql /var/run/mysqld

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS

Построчно:

  • создаём папку, в которой должен лежать файл сокета;
  • создаём сам сокет командой mkfifo (хотя сокет — это тоже файл, создавать его можно только специальной программой — mkfifo);
  • устанавливаем владельцем папки /var/run/mysqld пользователя mysql.

После чего MySQL уже должен нормально работать.

Заметки о настройке различных IT-штуковин. Настройка, допиливание, полировка. Конфигурируем приложения и тюнингуем сервера. Полезные параметры и ключи запуска программ. Увеличиваем скорость, уменьшаем отклик, ускоряем работу и улучшаем результаты работы. Объясняем …

Фото Настройки

Базы данных: sql, nosql, postsql и прочие варианты языков запросов и систем управления реляционными и около реляционными базами данных. Key-value хранилища на подобии Redis, Ignite, Memcached — скорость работы хранилищ …

Фото DataBase

Операционная система Linux (Линукс или Лайнакс) во многом похожая на проприетарную Unix. Линукс распространён на серверах, что означает, что изучая её вы улучшаете свой навык администрирования, DevOps и программирования. Открытая …

Фото Linux

Фото MariaDB / MySQL

Фото Как упаковать (собрать) Docker-контейнер со своим проектом и запустить его

Пример простых команд и конфигов для сборки проекта в образ Docker, его запуск в контейнере.

Фото Как на Bash посчитать число строк в проекте (директории)

Ниже будет представлен однострочник, решающий данную задачу на Bash + пошаговое описание его работы.

Фото Пользователи и авторизация (логин) в Django, кастомизация пользователя

В Django есть множество встроенных возможностей, которые позволяют не реализовывать многие классы для стандартных операций. Среди них — авторизация. Django …

Фото Панель администрирования Django - настройка вида (шаблона)

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель, как изменить оформление администрационной панели Django фреймворка.

Фото Панель администрирования Django - подключение, настройка, поиск, фильтрация

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель и добавить функциональность поиска, массовых действий, как изменить оформление …

Фото И снова sudo, и снова

В утилите sudo была исправлена очередная уязвимость.

Фото Google прекращает поддержку сторонних приложений в API Chrome-like

Гугл отключает всех пользователей Chrome-зависимых API. Зачем? К чему это приведёт?

Источник

Читайте также:  Opencv python module install
Оцените статью