Не вдається підключитися до локального сервера MySQL через сокет '/tmp/mysql.sock' (2)


143

Я встановив MySQL-сервер і намагаюся підключитися до нього, але отримую помилку:

    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Я перевірив свою / tmp каталог і немає mysql.sock. Я не можу ніде знайти mysql.sock. Я читав, що це може бути в

    /var/lib/mysql/mysql.sock

Але я там і перевірив, і навіть немає каталогу mysql, лише якась пошта з поштовим індексом всередині / lib. Може хтось допоможе мені з цією проблемою?


2
Я працюю над Mac OS X
user3344382

Привіт, чи можете ви вставити команду, яку ви використовуєте для підключення? Ви також запустили MySQL?
Марк Батлер

@MarkButler Я використовую цю команду: / usr / local / mysql / bin / mysql
user3344382

правильно, це просто сервер не працював. Однак я ще не можу зрозуміти, де знаходиться mysql.sock, чи можуть бути якісь інші приховані місця, де він може мешкати?
користувач3344382

Ця помилка є дуже загальною, і вона може бути з різних причин. Докладний
Janac Meena

Відповіді:


272

Спробуйте запустити сервер MySQL:

mysql.server start


44
ПОМИЛКА! Сервер вийшов без оновлення PID-файлу
bastianwegge

1
@wegginho Можливе рішення вашого повідомлення про помилку, якщо ви встановили MySQL через домашню версію PID помилки на запуску сервера mysql
Кейсі Робінсон

забув запустити служби mysql!
GeekHades

1
@bastianwegge спробуйте перевірити файл помилок у /usr/local/var/mysql/USERNAME.local.err, в моєму випадку мені довелося видалити /tmp/mysql.sock, а потім перезапустити за допомогоюmysql.server start
Джош Бредлі

61

У мене виникло те саме питання після оновлення OS X Yosemite, ну рішення досить просте, перевірте перевагу системи -> mysql, статус був STOP. Просто перезапустіть його, і він працює чудово на моєму комп'ютері зараз.


1
Дякую тоні @keren так просто, я витратив непогані 45 хвилин на зміну налаштувань у моєму файлі my.cnf, коли весь час це була єдина проблема.
kandroidj

Я працював і для мене спасибі, не мав ідеї щодо встановлення DMG.
Рамешвар Виєхаре

Це, на жаль, мені не допомогло
simhumileco

Просто і приголомшливо!
Десмонд DAI

6
Гм, що? Чому системні налаштування OSX мають опцію MySQL?
AlxVallejo

45

Для МАМП

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Від https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

ОНОВЛЕННЯ: Кожен раз, коли комп'ютер перезавантажується, я повинен вводити цю команду, тому я створив ярлик.

Виконайте наступне в термінальному типі:

~: vi ~/.profile

Додайте

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Зберегти.

У термінальному типі:

~: ... для джерела .profile config.

Тепер у терміналі ви можете просто набрати

~: sockit

1
Дивовижно. Просто виправлення, яке я шукав.
JoshHighland

1
Я неодноразово повертався до цієї публікації, і це завжди працює.
Trey Copeland

Оновлено до mysql 5.7.1 поза MAMP і зіткнувся з помилкою. Це зафіксувало це для мене
Девід

Якщо ви перебуваєте на Mac-книзі, і ви MAMP, це працює
kelrob-dev

32

Наступна команда вирішила мою проблему:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

1
Після 3 годин пошуку це вирішило мою проблему. Я щойно встановив mysql через homebrew, brew install mysqlале нічого з команд homebrew не сказав мені, щоб запуск працював належним чином. Це змусило кожну проблему піти ... Дякую !! Який саме той перший рядок, який ви написали? Що це означає?
mesqueeb

Дякую, працює чудово!
Ніроян Сельвананат

1
Привіт для мене це було: sudo chown -R _mysql: mysql / usr / local / mysql / data
Джунаїд Бхура

chown -R змінити власника -R рекурсивно
Hos Mercury

Первородний 10.13.1 та домашній пив помилку при встановленні mariadb (10.2.10). Ця зміна власника виправила його, тому тепер sudo brew services start mariadbтакож працює, щоб запустити mariadb під час завантаження (не лише під час входу в систему). ТАК! Дякую!
iggie

16

Після випробування всіх рішень він працював лише для мене після уточнення хоста

mysql -u root -p -h127.0.0.1

при питанні пароля

Enter password:

натисніть Enter

і воно спрацює, якщо все гаразд, як вище.


2
Я встановлюю mysql з контейнером docker, використовуючи Docker для Mac, і переношу його порт 3306 на Mac. Не додаючи значення -h 127.0.0.1, воно завжди підказує Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); після додавання аргументу він працює добре.
Пісня Еві

1
Це тому, що, переходячи через 127.0.0.1, не використовується сокет, я думаю. Більш вузький спосіб вирішення.
Лукас Морган

1
Біг mysql -u root -h127.0.0.1 без -pпрапора працював для мене, оскільки коли я встановив MySQL, я ніколи не запускав mysql_secure_installationкоманду. Я розумію, що в цьому випадку встановлення за замовчуванням не вимагає пароля.
Річі Томас

1
Працював як шарм!
Panduka DeSilva

10

Боротьба годинами єдине, що працювало, було

sudo mysql.server start

Потім зробіть безпечну установку за допомогою

mysql_secure_installation 

Потім підключіться до db через

mysql -uroot -p

Mysql встановлюється через homebrew, а версія є

Server version: 5.7.21 Homebrew

Вказання версії може бути корисним, оскільки рішення може бути різним залежно від версії.


9

У вашому конфігураційному файлі mysql, який присутній у /etc/my.cnfвнесених нижче змін, а потім перезапустіть mysqldпроцес dameon

[client]
socket=/var/lib/mysql/mysql.sock

А також перевірте цю пов’язану нитку

Неможливо підключитися до локального сервера MySQL через socket '/tmp/mysql.sock


у каталозі / etc немає файлу my.cnf. Я думаю, що я можу створити цей файл вручну, але, як я вже сказав, у каталог / var / lib немає файлу mysql, як сокет може бути там?
користувач3344382

Перевірте відповідні теми, які я розмістив, а також перевірте, чи працює ваш сервер mysql чи ні.
Рахул

Я знайшов файл у/etc/mysql/my.cnf
Девон

якщо ви встановили заварку, вам потрібно використовувати /tmp/mysql.sockмісце шкарпетки
Марк Шуст в M.academy,

8

Після вирішення моєї проблеми:

Перевірте, де ваш сервер MySQL записує до: netstat -nlp Якщо він здійснює список до TCP, тоді під час підключення до БД замість "localhost" використовуйте 127.0.0.1.

Перевірте документ MySQL тут


це, здається, працює для мене і доводить, що mysql живий, але чому я не можу підключитися до локального сокета?
Колін Д

8

Спробуйте це для мене спрацювало.

sudo /usr/local/mysql/support-files/mysql.server start


Чому цей шлях? при використанні команди "де є mysql" (MAC OS), що дає вихід /usr/local/mysql/bin/.Як визначити цей шлях у Mac?
Vineeth Bhaskaran

Я, Шлях змінюється відповідно
vasanth vasu

4

Якщо ви використовуєте XAMPP в Mac OS X і встановили MySQL з Homebrew, у вас може виникнути ця проблема. У вікні менеджера XAMPP перейдіть до керування серверами та виберіть MySQL, потім натисніть кнопку Налаштувати та відкрийте файл конфігурації, там у вас є шлях до файлу сокета, покладіть шлях у конфігурацію хоста MySQL і він повинен працювати.

Це щось подібне:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

то, наприклад, у Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Сподіваюся, це допомагає.


3

По-перше, ключовим було знати, де для мене знаходиться каталог даних. /usr/local/var/mysql Тут був принаймні один файл із розширенням .err, який передував моєму імені локальної машини. У ній була вся інформація, яка мені потрібна для діагностики.

Я думаю, що я накрутив, встановивши mysql 8 спочатку. Мій додаток не сумісний з ним, тому мені довелося знизити рівень до 5.7

Моє рішення, яке працювало для мене, збиралося /usr/local/etc/my.cnf

Знайдіть цей рядок, якщо його є. Я думаю, що його mysql 8 пов'язано:

mysqlx-bind-address = 127.0.0.1 

Видаліть його, тому що в mysql 5.7 сказано, що це не подобається в журналі помилок

Також додайте цей рядок туди, якщо його немає там під адресою bind.

socket=/tmp/mysql.sock

Перейдіть до /tmpкаталогу та видаліть там усі файли mysql.sock. При запуску сервера він відтворить файли шкарпеток

Викопніть каталог даних з mySQL у зупиненому стані. Моя була /usr/local/var/mysql . Це те саме місце, де є журнали

Звідти я побіг

>mysqld --initialize

Потім все почало працювати ... ця команда дасть вам випадковий пароль наприкінці. Збережіть цей пароль для наступного кроку

Запустивши це, щоб призначити власний пароль.

>mysql_secure_installation 

І те й інше

>brew services stop mysql@5.7

і

>mysql.server start

зараз працюють. Сподіваюся, це допомагає. Це приблизно 3 години спроб та помилок.



0

Я витратив багато часу, роблячи це, я хочу покласти свою програму джанго на свій сервер, і коли я запускаюся, python manage.py migrateя зустрів ці питання

І !! Я встановив це ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Це спрацювало нарешті!



0

Зупинення та запуск сервера mysql з терміналу вирішило мою проблему. Нижче наведено cmds для зупинки та запуску сервера mysql в MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Примітка. Перезапуск послуг із налаштувань Mac Mac не вирішив проблему в моєму Mac. Тому спробуйте перезапустити з терміналу.


0

Якщо ви працюєте на macOS, просто простіше спочатку перевірити, перейдіть у розділ "Налаштування системи" та побачите, чи працює MySQL чи ні.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.