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

Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2) при последующем подключении через терминал

Мои искренние извинения за вопрос, на который, очевидно, уже был дан ответ. Тот факт, что я публикую, заключается в том, что я хотел бы быть абсолютно уверенным, поскольку в настоящее время речь идет о реальном сервере.

Это то, что случилось. Я случайно сисадмин на выделенном сервере. На машине работает tomcat, использующий mysql в качестве базы данных. У меня в процессе установки OpenCart случается установка curl, gd and mysql через

 apt-get install curl libcurl3 libcurl3-dev php5-curl
 restart apache2
 apt-get install php5-gd
 restart apache2
 apt-get install libapache2-mod-auth-mysql php5-mysql 
 restart apache2

Я был связан раньше с mysql -u<username> -p и все было просто отлично. Теперь это дает

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

Чтение онлайн и дальше ServerFault это факты:

#/var/lib# /etc/init.d/mysqld start
 -bash: /etc/init.d/mysqld: No such file or directory
#/var/lib# netstat -lntp | grep mysqld
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      29570/mysqld  
#/var/lib# ps -ef | grep mysqld
root     13684 13580  0 09:25 pts/3    00:00:00 grep mysqld
root     29321     1  0  2011 ?        00:00:00 /bin/sh bin/mysqld_safe --user=mysql
mysql    29570 29321  0  2011 ?        03:58:46 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/server.host.com.err --pid-file=/usr/local/mysql/data/server.host.com.pid --socket=/tmp/mysql.sock --port=3306

Вот как /etc/mysql/my.cnf выглядит как :

 [client]
 port            = 3306
 socket          = /var/run/mysqld/mysqld.sock

 [mysqld_safe]
 socket          = /var/run/mysqld/mysqld.sock
 nice            = 0

 [mysqld]
 user            = mysql
 socket          = /var/run/mysqld/mysqld.sock
 port            = 3306
 basedir         = /usr
 datadir         = /var/lib/mysql
 tmpdir          = /tmp
 skip-external-locking


 dpkg -l | grep mysql
 rc  libapache2-mod-auth-mysql       4.3.9-12ubuntu1              Apache 2 module for MySQL authentication
ii  libmysqlclient16                5.1.63-0ubuntu0.10.04.1      MySQL database client library
ii  mysql-common                    5.1.63-0ubuntu0.10.04.1      MySQL database common files (e.g. /etc/mysql
ii  php5-mysql                      5.3.2-1ubuntu4.17            MySQL module for php5

[РЕДАКТИРОВАТЬ]

очевидно есть 2 файла my.cnf

# ls -al /etc/my.cnf
-rw-r--r-- 1 root root 4715 2011-11-30 12:52 /etc/my.cnf
# ls -al /etc/mysql/my.cnf 
-rw-r--r-- 1 root root 3564 2012-06-11 14:11 /etc/mysql/my.cnf

ниже представлена ​​конфигурация /etc/my.cnf

[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock

# The MySQL server
[mysqld]
datadir         =/usr/local/mysql/data
port            = 3306
socket          = /tmp/mysql.sock

и содержимое `/ usr / local / mysql / находится ниже

/usr/local/mysql# ls -l
total 80
drwxr-xr-x  2 root  root  4096 2011-11-30 07:56 bin
-rw-r--r--  1 root  root 17987 2011-10-12 12:10 COPYING
drwx------ 11 mysql root  4096 2012-08-21 07:43 data
-rw-------  1 root  root   346 2011-11-30 13:09 DEADJOE
drwxr-xr-x  2 root  root  4096 2011-11-30 07:55 docs
drwxr-xr-x  3 root  root  4096 2011-11-30 07:55 include
-rw-r--r--  1 root  root  7604 2011-10-12 12:10 INSTALL-BINARY
drwxr-xr-x  3 root  root  4096 2011-11-30 07:56 lib
drwxr-xr-x  4 root  root  4096 2011-11-30 07:55 man
drwxr-xr-x 10 root  root  4096 2011-11-30 07:56 mysql-test
-rw-r--r--  1 root  root  2552 2011-10-12 12:10 README
drwxr-xr-x  2 root  root  4096 2011-11-30 07:56 scripts
drwxr-xr-x 27 root  root  4096 2011-11-30 07:56 share
drwxr-xr-x  4 root  root  4096 2011-11-30 07:56 sql-bench
drwxr-xr-x  2 root  root  4096 2011-11-30 07:55 support-files

Нет mysqld.sock в /var/run/mysqld и нет /var/lib/mysql но есть /usr/local/mysql/data содержащие данные mysql и /tmp/mysqld.sock

Итак, какие у меня здесь варианты?

Шаг 1 резервное копирование /etc/mysql/my.cnf

Шаг 2 удалять /etc/mysql/my.cnf

Шаг 4 вызовите /etc/init.d/mysql start (на самом деле mysql отсутствует в /etc/init.d/ от mysql.server, я полностью смущен этим)

Так что, если я хорошо понимаю. установка php5-mysql установила mysql-commons, который создал /etc/mysql/my.cnf тем временем у меня уже есть /etc/my.cnf

Пожалуйста, сообщите об этом, так как я не хочу ошибаться и запускать команды исходя из собственных предположений. Спасибо, что прочитали это.

Хорошо, это беспорядок.
Чтобы ответить на некоторые из ваших проблем / вопросов:

Почему Tomcat все еще работает нормально?
Tomcat, возможно, подключается через сеть, а не через сокет.
Также mysqld не будет повторно читать my.cnf во время его работы.
Отсутствующий / перемещенный каталог данных будет проблемой при следующем перезапуске, а не во время выполнения.

Почему вы не можете войти через mysql -u ... больше?
Теперь у вас есть 2 файла my.cnf.
Порядок файлов важен, mysql сначала прочитает /etc/my.cnf а потом /etc/mysql/my.cnf. Если параметры определены в обоих местах, победит последний (http://dev.mysql.com/doc/refman/5.1/en/option-files.html).

Какие у вас есть варианты сейчас?
Если вы удалите /etc/mysql/my.cnf, или замените его содержимое на /etc/my.cnf, вы будете вести себя так же, как и раньше.
На данный момент это сработает, но в будущем я бы посоветовал перейти на чистую установку из пакета.

Используйте следующую команду в терминале.

sudo ln -s {your current .sock location} {path in the error}

например

sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock

Это исправит ошибку.

Примечание: перед запуском этой команды необходимо проверить, существует ли папка mysqld. если не существует, создайте папку перед запуском команды.

Как сказал @faker, /etc/init.d/mysql.server и / usr / local / mysql указывает, что ваш сервер Mysql установлен из источников. Не стоит поддерживать скомпилированный экземпляр mysql, если у вас есть красивый двоичный файл mysql со сценариями, совместимыми с Ubuntu (например, сценарии запуска debian для обновлений, восстановления таблиц при загрузке и т. Д.).

Также - никогда не копируйте сокеты - лучше сделать символьную ссылку :)

Сервер MySQL еще не установлен согласно dpkg, вам нужно установить его, используя apt-get install mysql-server