ОШИБКА 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
просто чтобы убедиться, что вы пытаетесь подключиться к серверу БД локально?
Джон Кейн
Я недавно установил MySQL на Ubuntu-12.04.2. Версия 14.14 Distrib 5.5.32, для debian-linux-gnu (x86_64), использующей readline 6.2, его конфигурация по умолчанию не содержит 'skip-network'. Таким образом, вы не встретите ошибку с этой версией.

Ответы:

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
@develop, я нашел мой здесь: /etc/mysql/mysql.conf.d/mysqld.cnf
однажды
Я изменил bind-address = <ip основного сервера>, но не могу перезапустить MySQL.
Ави
14

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

grex_e
источник
К вашему сведению, если вы укажете 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
Bunyk
источник
@ram Возможно, вы используете другой брандмауэр. Или ваша проблема вовсе не в брандмауэре. Проверьте документацию для вашего дистрибутива Linux.
Банык
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, он будет работать.

S.Roshanth
источник
2
Маленькая ошибка, cd "C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin" а потом mysqld --install. Кроме того, номер сервера зависит от загрузки.
Dejazmach
Это решило мою проблему
Штеффи Керан Рани Дж
6

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

mysql -u root -h 127.0.0.1 -p -P 3306

Ю Цзяо
источник
где я могу найти my.cnf. его нет на сервере Wamp, в моем ноутбуке
Дипак Кейнс
На окнах он обычно называет «my.ini»
Ю Цзяо
Для меня порт был проблемой. Спасибо
Чандра Эскай
0

Вам нужно изменить параметр bind-address на 127.0.0.1 в конфигурационном файле mysql (my.ini или my.cnf) или использовать тот, который там определен.

Если это не сработает, вы должны убедиться, что служба mysql действительно запущена.

nkr1pt
источник
1
Я добавил строку "bind-address = 127.0.0.1" в файл my.cnf. Но это не работает.
Чарли Эппс
2
Если эта строка присутствует, mysql будет прослушивать ТОЛЬКО указанный адрес. Чтобы включить удаленный доступ, вы должны удалить эту строку. Знайте о последствиях безопасности, которые это имеет.
webkraller
добавление bind-address =127.0.0.1в my.cnf отключает удаленное подключение к БД. Поэтому, даже если это сработает (а это не так) - это не очень хорошее решение.
Нир Альфаси
Адрес привязки должен быть 0.0.0.0, если вы не хотите, чтобы кто - либо еще подключался.
Маркиз Лорн
0

Incase вы работаете на порт не по умолчанию, вы можете попробовать использовать --port=<port num> предоставленные --skip-networkingISnot enabled.

KDAS
источник
0

У меня просто есть эта проблема .... работает в Win7 и Wamp Server ... после прочтения этого

Установлено, что антивирусный брандмауэр вызвал проблему.

Adhie_x
источник
0

Я также столкнулся с той же проблемой. Следующее помогло мне решить проблему. Перейдите в панель управления-> Администрирование -> Службы, внутри которой вы наверняка увидите MySQL servce: щелкните правой кнопкой мыши и произнесите start (принудительный запуск).

Mightian
источник
0

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

Рекомендуется установить IP-адреса /etc/hostsна вашем компьютере:

127.0.0.1 db.local

и запустить его mysql -u root -h db.local -p

avivamg
источник
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

если у вас есть ноль, то удалите # перед port = 3306 в файле cnf.

Кароль Прейскорн
источник
0

Пожалуйста, убедитесь, что ваш сервер MySql работает на localhost.

В линуксе

Чтобы проверить, работает ли сервер MySql:

sudo service mysql status

Чтобы запустить сервер MySql:

sudo service mysql start

На винде

Чтобы проверить, работает ли сервер MySql:

C:\Windows\system32>net start

Если MySql отсутствует в списке, вы должны запустить / запустить MySql.

Чтобы запустить сервер MySql:

C:\Windows\system32>net start mysql

Надеюсь это поможет.

Сафикур Раман
источник
-1

Я изменил каталог установки при переустановке, и это сработало.

Гурсимран Панну
источник
-2

я просто перезапускаю мой сервер MySQL и проблема решена в Windows Net Stop MySQL, затем Net Start MySQl Ubuntu Linux Linux службы запуска MySQL

Jasim
источник