Установка mysql -server не создаст файл mysql .sock | не могу подключиться к серверу - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь подключиться к phpmyadmin в localhost и получить свою базу данных, но я столкнулся с проблемой, которую не могу исправить. Когда я пытаюсь подключиться к сервису mysql, я получаю эту ошибку:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 
(2 "No such file or directory")

Я предположил, что мой файл не был создан в нужном месте, и я видел много относительных вопросов по SO (я Я знаю, что это может быть дубликатом здесь), но я не нашел ответа, изучив эти темы ..

Я пробовал:

  • перезапуск mysql службы (из конечно) -> ничего не изменилось
  • purge mysql -сервер и переустановите его, но при переустановке не создается файл sock
  • найдите мой файл sock с sudo find / -name mysql.sock вывод пуст
  • найдите мой файл sock с помощью mysqladmin | grep mysql.sock, но в моем файле my.cnf это выглядит только для сокета conf

Я знаю, что не могу создать этот файл самостоятельно, так как это файл с необычным формат.

Кто-нибудь знает, как действовать здесь? : D

1 Ответ

1 голос
/ 24 апреля 2020

Либо MySQL не работает, либо путь к сокету правильный (как вы пытались разобраться). MySQL использует два разных типа соединения для прослушивания: сеть TCP / IP и сокеты. Как примечание, система привилегий MySQL различает два, поэтому пользователь со значением хоста % не будет разрешать соединения через сокет, а хост localhost не будет соответствовать соединению TCP / IP, даже тот, который приходит с того же локального компьютера (127.0.0.1 до MySQL).

Если ваша учетная запись пользователя существует с обоими полями хоста, вы можете изменить конфигурацию phpMyAdmin для подключения через соединение TCP / IP. Отредактируйте файл конфигурации config.inc.php и измените директиву $cfg['Servers'][$i]['host'] = 'localhost'; на $cfg['Servers'][$i]['host'] = '127.0.0.1';

Однако, возможно, лучшим решением будет исправить путь к сокету. Я не совсем понимаю, что не так с командой mysqladmin | grep mysql.sock, которая должна была дать вам путь к сокету. Все программы используют один и тот же путь к сокету для подключения к MySQL, поэтому, хотя этот путь используется mysqladmin и другими инструментами командной строки, это также путь, который вы будете использовать для phpMyAdmin. Другой способ получить это - подключиться через клиент командной строки и запустить команду STATUS;. Будет следующая строка: UNIX socket: /var/run/mysqld/mysqld.sock.

В любом случае, когда у вас есть путь, вы можете добавить его непосредственно к config.inc.php, добавив (или отредактировав, если он уже существует) директиву сокета : $cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';.

Немного лучше было бы отредактировать вашу конфигурацию PHP и установить ее глобально, чтобы все программы PHP знали правильный путь. В вашем php.ini правильная директива должна быть mysqli.default_socket. PHP принимает «встроенные MySQL значения по умолчанию», если вы не переопределите его здесь, а phpMyAdmin принимает значение PHP, если вы не переопределите его в config.in c. php. Таким образом, любое из этих решений решит проблему для вас. Возможно, проще всего установить его только для phpMyAdmin, но если вы занимаетесь другими PHP разработками, это может упростить его глобальное определение в php .ini.

...