MySQL, черт возьми ... не удается подключиться к базе данных /tmp/mysql.sock

StackOverflow https://stackoverflow.com/questions/4251009

Вопрос

Обновить: Я ОСТАНОВИЛ старый процесс mysql, который был запущен и вызывал некоторую путаницу.Теперь я думаю, что у меня запущена только более новая версия (5.1.40).НО это указывает на неправильный файл данных.Он указывает на файл данных установки по умолчанию, и я бы хотел, чтобы он указывал на существующий файл данных в /var/mysql.Вот часть файла /etc/my.cnf

# The following options will be passed to all MySQL clients
[client]
#password   = your_password
port        = 3306
socket      = /var/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port        = 3306
socket      = /var/mysql/mysql.sock

это указывает на более старый файл mysql.sock.Кажется, я не могу найти в дереве каталогов более новую установку MySQL ?!?если только это не где-нибудь в укромном месте.

Кто-нибудь поможет?По сути, я установил более новый MySQL, и теперь мне нужно запустить эту новую версию с моими существующими данными.И разберись с этим mysql.sock....


Недавно я обновил MySQL на Mac OS X Server, и мне чертовски сложно подключиться к нему из приложения rails.или последовательно из командной строки, если уж на то пошло.

я уверен, что это очевидная ошибка с моей стороны, но у меня лишь умеренный опыт работы с командной строкой, поэтому надеюсь, что кто-нибудь сможет помочь...

также связано с тем, что мое приложение rails больше не может подключаться.Не удается подключиться через /tmp/mysql.sock но я не уверен, почему он ищет именно там, потому что в / tmp нет mysql.sock, и я не знаю, что / где это должно быть....

Редактировать: добавление результатов из mysql_config --sockets

$ mysql_config --sockets
Usage: /usr/local/mysql/bin/mysql_config [OPTIONS]
Options:
        --cflags         [-I/usr/local/mysql/include  -g -Os -arch ppc -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL]
        --include        [-I/usr/local/mysql/include]
        --libs           [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient -lz -lm     -lmygcc]
        --libs_r         [-arch ppc  -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm     -lmygcc]
        --plugindir      [/usr/local/mysql/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [5.1.40]
        --libmysqld-libs [-arch ppc  -L/usr/local/mysql/lib -lmysqld -ldl  -lz -lm       -lmygcc]

Редактировать 2 какой mysql_config

$ which mysql_config
/usr/local/mysql/bin/mysql_config
Это было полезно?

Решение

Вы пытаетесь использовать разные розетки для сервера и клиента. Ваши рельсы пытаются подключиться к /tmp/mysql.sock, MySQL прослушивает /var/mysql/mysql.sock.

Обычно настройка MySQL хранится в /etc/my.cnf, но в вашем ps Ваш выход, который я вижу путь сокета дается в качестве параметра. Так что действительно зависит от специфики вашей системы.

В любом случае, посмотрите в /etc/my.cnf и вашу базу данных .yml и убедитесь, что mysql.sock появляется на том же пути в обоих файлах.

Другие советы

Не уверен, будет ли это полностью решить вашу проблему (вам может потребоваться исправить путь сокета, как предложено Cababunga), но попробуйте 127.0.0.1 Чтобы обойти соединение сокета и установить TCP One.

Функция real_connect в модуле Ruby MySQL на самом деле принимает кучу параметров:

real_connect(host,user,password,db,port,socket,flags)

Тот, который вам нужно изменить, - это параметр "socket".В моих приложениях Python на Mac OS X я должен установить для этого параметра сокета значение /var/mysql/mysql.sock.

Итак, обратите внимание, вам нужно изменить не хост, а сам сокет.Есть ли какой-нибудь socket: параметр, который вы можете использовать в своей конфигурации?

Итак, вот что вы можете сделать...

Запустите команду mysql_config --socket в вашей командной строке в терминале OS X, и он должен вернуть вам значение "сокета", который вам нужно использовать (вероятно /var/mysql/mysql.sock).

Затем в вашем файле database.yml убедитесь, что вы добавили строку:

socket: /var/mysql/mysql.sock

В основном я сталкивался с этим через Python в OS X и исправлял это аналогичным образом, но я предполагаю, что Ruby вызовет у вас ту же проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top