ПОМИЛКА 2003 (HY000): не вдається підключитися до сервера MySQL на "127.0.0.1" (111)


135

Я використовую таку команду:

mysql -u root -h 127.0.0.1 -p

і повідомлення про помилку:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

Хто може допомогти мені це виправити?


3
Чи працює демон mysql? У вас є брандмауер? Чи можете ви telnet до mysql за замовчуванням порт 306 так - telnet localhost 3306
mmmmmm

демон демона mysql. Я впевнений.
Чарлі Еппс

1
Це тільки я або якщо ви підключаєтесь до локального сервера mysql, вам не потрібно вказувати хост, наприклад, mysql -u root -p повинен працювати?
RMcLeod

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

Я свіжий встановлений mysql на ubuntu-12.04.2. Версія 14.14 Distrib 5.5.32, для debian-linux-gnu (x86_64), що використовує readline 6.2, його конфігурація за замовчуванням не містить "пропускної мережі". Тож ви не зіткнулися б з помилкою в цій версії.

Відповіді:


220

Якщо ви використовуєте ubuntu, вам слід скористатися наступними кроками, щоб уникнути цієї помилки (якщо реплікація не ввімкнена):

  1. запустити команду vim /etc/mysql/my.cnf
  2. коментуйте, bind-address = 127.0.0.1використовуючи символ #
  3. перезавантажте ваш сервер mysql один раз.

Оновлення

На кроці 1, якщо ви не можете знайти його bind-addressу my.cnfфайлі, знайдіть його у /etc/mysql/mysql.conf.d/mysqld.cnfфайлі.

Оновлення в разі включення реплікації MySQL

Спробуйте підключити MySQL-сервер, IPдля якого MySQL-сервер прив’язаний у "my.cnf instead oflocalhost або 127.0.0.1".


8
Дякую!!! Я давно намагався з'ясувати це! Я прокоментував цей рядок, зберег файл і побіг service mysql restart. А тепер це працює!
Райан

У моєму випадку у мене була адреса сервера замість 127.0.0.1 для bind-адреси. Якщо це стосується вас, вам також потрібно буде прокоментувати це.
Влад Шнаковський

4
Немає bind-address = 127.0.0.1в/etc/mysql/my.cnf
RegarBoy

6
@developer, я знайшов тут своє: /etc/mysql/mysql.conf.d/mysqld.cnf
один раз

Я змінив bind-address = <основний сервер ip>, але не можу перезапустити mysql.
Аві Кехат

14

Спробуйте localhostзамість того, 127.0.0.1щоб підключитися або у вашому connection-config. Працював для мене на Debian Squeeze Server


FYI, якщо ви вказали localhost, він вказує Mysql підключатися через unix-сокет (/var/run/mysqld/mysqld.sock в ubuntu), а не через сокет TCP.
Герцог

8

Це відбувається, коли ви забудете запустити базу даних перед підключенням до неї:

mysql.server start

тоді

mysql -u root -p -h 127.0.0.1

в терміналі на mac та linux. Я вважаю, що це саме в Windows CMD, але я не впевнений.
Генрі

Мені довелося запустити MySQL-сервер, використовуючи sudo service mysqld startв моєму екземплярі AWS EC2 за допомогою MySQL Community Server.
harshainfo

6

У моєму випадку (віддалене підключення) допомогло відключити брандмауер на сервері.

service iptables stop

@ram Можливо, ви використовуєте інший брандмауер. Або ваша проблема зовсім не брандмауер. Перевірте документацію на ваш linux distro.
Буник

1
@ram tryservice firewalld stop
Максим Мазурок

1
MySQL зазвичай працює на порту 3306, тому додайте це до свого брандмауера
kurdtpage

6

Ця проблема може виникнути через те, що ваш сервер MySQL не встановлений і не працює. Щоб виконати командний рядок запуску як адміністратор і введіть команду:

"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --install

Якщо ви отримаєте повідомлення "сервіс успішно встановлений", вам потрібно запустити службу MySQL. Для цього: перейдіть до вікна Сервіси (Диспетчер завдань -> Послуги -> Відкрити служби). Знайдіть MySQL та запустіть його з верхньої панелі навігації. Тоді, якщо спробувати відкрити mysql.exe, це спрацює.


2
Маленька помилка, cd "C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin" і то mysqld --install. Крім того, номер сервера залежить від завантаження.
Dejazmach

Це вирішило мою проблему
Steffi Keran Rani J

6

подивіться на my.cnfфайл, якщо він містить [client]розділ, а portінший, ніж справжній порт прослуховування (за замовчуванням 3306), ви повинні підключити сервер із явним параметром -P 3306, наприклад

mysql -u корінь -h 127.0.0.1 -p -P 3306


де я можу шукати my.cnf. його немає на сервері wamp, а в моєму ноутбуці
Deepak Keynes

У Windows він зазвичай називає "my.ini"
Yu Jiaao

Для мене порт був проблемою. Спасибі
Чандра Ескай

0

Вам потрібно змінити параметр bind-address у 127.0.0.1 у файлі конфігурації mysql (my.ini або my.cnf) або використовувати той, який визначений там.

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


1
У файл my.cnf я додав рядок "bind-address = 127.0.0.1". Але це не працює.
Чарлі Еппс

2
Якщо цей рядок присутній, mysql прослухає ТОЛЬКО за вказаною адресою. Щоб увімкнути віддалений доступ, вам слід ВИДАЛИТИ цей рядок. Будьте в курсі наслідків для безпеки.
webkraller

додавання bind-address =127.0.0.1в my.cnf відключає віддалене з'єднання з БД. Тож навіть якщо це спрацювало (чого це не так) - це не гарне рішення.
Нір Альфасі

Адреса прив’язки повинна бути 0,0.0,0, якщо ви не хочете, щоб хто - небудь інший підключався.
Маркіз Лорн

0

Incase ви працюєте на порт не за замовчуванням, ви можете спробувати використовувати --port=<port num> надані --skip-networkingISnot enabled.


0

У мене просто є ця проблема .... працює на Win7 і wamp сервері ... прочитавши це

Виявлено, що антивірусний брандмауер викликав проблему.


0

Я також стикався з тим же питанням. Наступне допомогло мені виправити проблему, перейдіть до панелі керування-> Адміністративні інструменти -> сервіси всередині цього. Ви, безсумнівно, побачите сервер MySQL: клацніть правою кнопкою миші та скажіть запуск (примусовий запуск).


0

Для користувачів Docker - Коли ви намагаєтеся підключити локальний sql за допомогоюmysql -u root -h 127.0.0.1 -pі ваша база даних працює наконтейнері Docker , переконайтеся, що служба mysql запущена (перевірте за допомогоюdocker ps а також перевірте, чи ви знаходитесь у правильному порту), якщо контейнер вниз ви отримаєте помилку підключення.

Найкраща практика - встановити ip-i /etc/hostsна вашій машині:

127.0.0.1 db.local

і запускаючи його mysql -u root -h db.local -p


0

Спробуйте не закривати iptables та відкривати порт 3306.

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

або sudo ufw allow 3306 якщо ви використовуєте ufw.

перевірити: netstat -lnp | grep mysqlви повинні отримати що-небудь таке:

cp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2048/mysqld         
tcp6       0      0 :::33060                :::*                    LISTEN      2048/mysqld         
unix  2      [ ACC ]     STREAM     LISTENING     514961   2048/mysqld          /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     514987   2048/mysqld          /var/run/mysqld/mysqlx.sock

якщо у вас є null, тоді видаліть # before port = 3306 у файлі cnf.


0

Переконайтеся, що ваш сервер MySql працює на localhost.

У Linux

Щоб перевірити, чи працює сервер MySql:

sudo service mysql status

Для запуску сервера MySql:

sudo service mysql start

У Windows

Щоб перевірити, чи працює сервер MySql:

C:\Windows\system32>net start

Якщо MySql відсутній у списку, потрібно запустити / запустити MySql.

Для запуску сервера MySql:

C:\Windows\system32>net start mysql

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



-2

я просто перезавантажую мій сервер mysql, і проблема, вирішена в Windows net stop MySQL, потім чистий запуск MySQl ubuntu linux sudo service start mysql

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