MySQL, черт возьми ... не удается подключиться к базе данных /tmp/mysql.sock
-
27-09-2019 - |
Вопрос
Обновить: Я ОСТАНОВИЛ старый процесс 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 вызовет у вас ту же проблему.