Mysql
 sql >> база данни >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):Не мога да се свържа с локален MySQL сървър чрез сокет 'MySQL' (2)

Когато използвате само "localhost", MySQL клиентската библиотека се опитва да използва Unix домейн сокет за връзката вместо TCP/IP връзка. Грешката ви казва, че сокетът, наречен MySQL , не може да се използва за осъществяване на връзката, вероятно защото не съществува (грешка номер 2).

От Документацията на MySQL :

В Unix MySQL програмите третират името на хоста localhost специално, което вероятно е различно от това, което очаквате в сравнение с други мрежови програми. За връзки към локален хост, MySQL програмите се опитват да се свържат с локалния сървър чрез използване на Unix файл на сокет. Това се случва дори ако е дадена опция --port или -P за указване на номер на порт. За да сте сигурни, че клиентът прави TCP/IP връзка с локалния сървър, използвайте --host или -h, за да посочите стойност на име на хост от 127.0.0.1 или IP адреса или името на локалния сървър. Можете също така изрично да посочите протокола за свързване, дори за локален хост, като използвате опцията --protocol=TCP.

Има няколко начина за решаване на този проблем.

  1. Можете просто да използвате TCP/IP вместо Unix сокета. Можете да направите това, като използвате 127.0.0.1 вместо localhost когато се свържете. Unix сокетът обаче може да бъде по-бърз и по-безопасен за използване.
  2. Можете да промените сокета в php.ini :отворете конфигурационния файл на MySQL my.cnf за да намерите къде MySQL създава сокета и задайте mysqli.default_socket на PHP към този път. В моята система това е /var/run/mysqld/mysqld.sock .
  3. Конфигурирайте сокета директно в PHP скрипта, когато отваряте връзката. Например:

    $db = new MySQLi('localhost', 'kamil', '***', '', 0, 
                                  '/var/run/mysqld/mysqld.sock')
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP и mySQL:Бъг от 2038 г.:Какво е това? Как да го реша?

  2. MySQL заявка за получаване на имена на колони?

  3. MySQL NULLIF() Обяснено

  4. Как да избера цял ред, който има най-голям идентификатор в таблицата?

  5. Замяна на mysql_* функции с PDO и подготвени оператори