Мы запускаем сервер Ubuntu 13.10 под Vagrant и столкнулись с интересной проблемой.
Мы переопределяем расположение сокета в conf.d / my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld_safe]
socket = /tmp/mysql.sock
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysql.pid
socket = /tmp/mysql.sock
port = 3306
datadir = /var/lib/mysql
bind-address = 0.0.0.0
Все идет нормально. Запуская сервер, на самом деле есть сокет, который прослушивает / tmp.
Однако получить к нему доступ может только суперпользователь!
Как не суперпользователь, mysql -u root -pXXXX получает следующую ошибку:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
Клиент пытается подключиться не к тому сокету.
Мы предположили, что проблема заключается в том, что наш непривилегированный пользователь не может получить доступ к файлам conf, чтобы найти правильный сокет, и на самом деле изменение разрешений для / etc / mysql на 0755 устраняет эту проблему, но это не похоже на правильное исправление.
В качестве примечания, 12.04 это поведение такое же, но маскируется тем фактом, что при запуске mysql он создает сокет в / tmp, но также создает символическую ссылку в / var / run / mysqld, поэтому, когда клиент пытается для подключения находит сокет по умолчанию.
На обеих машинах используется mysql версии 5.5.37.
В зависимости от вашей точной конфигурации, приведенного ниже может быть достаточно, чтобы решить проблему с подключением.
вы можете запустить mysql с помощью --socket = / tmp / mysql.sock
--socket=path, -S path
Для подключений к localhost - файл сокета Unix, который нужно использовать, или, в Windows, имя именованного канала.
Чтобы сохранить этот параметр, не позволяя пользователю читать всю конфигурацию mysql, вы можете изменить настройки файла ~ / .my.cnf
видеть Файлы опций для подробностей
В вашем случае вы должны добавить в этот файл socket = / tmp / mysql.sock.
Я только что посмотрел на довольно свежую установку Ubuntu 14.04, и разрешения по умолчанию для / etc / mysql равны 755. Честно говоря, я не понимаю, почему вы думаете, что это проблема.