Назад | Перейти на главную страницу

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

У меня есть учетная запись на общем сервере. У меня есть доступ к jailshell, а также PhpMyAdmin.

Я хочу запускать команды mysql через SSH, но получаю сообщение об ошибке:

$ mysql -u mySqlUser -p mySqlPw
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

Я могу подключиться к PHP и phpMyAdmin, поэтому можно ли вызвать mysql из оболочки и подключить его через ip и порт вместо сокета? Файл /var/lib/mysql/mysql.sock не существует - возможно, это намеренно, и единственное, что в /etc/my.cnf является

[mysqld]
skip-innodb

Больше информации

У меня нет доступа к изменению настроек системы. Я поискал mysql.sock в / var, но ничего не нашел. Однако phpMyAdmin может каким-то образом подключаться через сокет:

На самом деле было бы здорово, если бы я мог подключиться через IP.

Также пробовал эти два синтаксиса:

$ mysql -u mySqlUser -p mySqlPw -h localhost
$ mysql -u mySqlUser -p mySqlPw -h localhost -P 3306

Оба с одинаковым результатом:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Вам не хватает параметра протокола:

mysql --protocol=tcp -u mySqlUser -p mySqlPw

или

mysql -u mySqlUser -p mySqlPw -h localhost --protocol=tcp -P 3306

Оба должны быть одинаковыми (localhosst: 3306 - значения по умолчанию)

$ mysql -u ... -p ... -h 127.0.0.1

или

$ mysql -u ... -p ... -h имя_хоста.example.com

Я считаю, что это предотвращает использование сокета, используйте -h localhost, используя сокет. Другой вариант, найдите файл mysql.sock на сервере, а затем ...

$ mysql -u ... -p ... -S /path/to/mysql.sock

Из mysql(1) страница руководства:

  ·   --host=host_name, -h host_name

      Connect to the MySQL server on the given host.