Не удается подключиться к серверу MySQL, ошибка 111 [закрыто]


152

Я установил сервер mysql на linux box IP = 192.168.1.100, но когда я пытаюсь подключиться к этому IP, это всегда ошибка (111). но используйте localhost и 127.0.0.1 в порядке.

beer @ beer-laptop # ifconfig | grep "inet addr"
          адрес в сети: 127.0.0.1 маска: 255.0.0.0
          адрес в сети Интернет: 192.168.1.100 Bcast: 192.168.1.255 Маска: 255.255.255.0

beer @ beer-laptop # mysql -ubeer -pbeer -h192.168.1.100
ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL на 192.168.1.100 (111)

beer @ beer-laptop # mysql -ubeer -pbeer -hlocalhost
Добро пожаловать на монитор MySQL. Команды заканчиваются на; или \ g.
Ваш идентификатор соединения MySQL - 160
Версия сервера: 5.1.31-1ubuntu2 (Ubuntu)

Напечатайте 'помощь;' или '\ h' за помощь. Введите «\ c», чтобы очистить буфер.

MySQL> 

beer @ beer-laptop # mysql -ubeer -pbeer -h127.0.0.1
Добро пожаловать на монитор MySQL. Команды заканчиваются на; или \ g.
Ваш идентификатор соединения MySQL - 161
Версия сервера: 5.1.31-1ubuntu2 (Ubuntu)

Напечатайте 'помощь;' или '\ h' за помощь. Введите «\ c», чтобы очистить буфер.

MySQL> 

Подключить с другой машины это тоже ошибка 111.

другой @ другой-ноутбук # mysql -ubeer -pbeer -h192.168.1.100
ОШИБКА 2003 (HY000): не удается подключиться к серверу MySQL на 192.168.1.100 (111)

Как разница между использованием localhost / 127.0.0.1 и 192.168.1.100 в этом случае. Я не знаю, как подключиться к этой базе данных с другого компьютера.

Помогите, пожалуйста. Спасибо.

Ответы:


263

Это, вероятно, означает, что ваш сервер MySQL только прослушивает интерфейс localhost.

Если у вас есть такие строки:

bind-address = 127.0.0.1

В вашем my.cnfконфигурационном файле вы должны прокомментировать их (добавить # в начале строк) и перезапустить MySQL.

sudo service mysql restart

Конечно, для этого вы должны быть администратором сервера.


6
очевидно, у него нет skip-networkingлинии ;-)
— Майкл Крелин - хакер

11
как узнать местонахождение mysql my.cnf: stackoverflow.com/questions/2482234/…
— Кирилл Жакварт

2
но что происходит, когда вы МОЖЕТЕ подключиться к нему из MySQL верстак? у меня та же проблема.
— Джордж Памфилис

3
Я следовал тому, что дано в ответе, но все еще не мог заставить его работать. Затем я выяснил, что параметр «bind-address» находится в файле «/etc/mysql/mysql.conf.d/mysqld.cnf». Прокомментировал это там, и это сработало!
— Яхья

3
более новые версии ubuntu> = 16.04 могут иметь эту строку в /etc/mysql/mysql.conf.d/myqld.cnf
— dellasavia

38

111 означает отказ в соединении , что, в свою очередь, означает, что ваш mysqld слушает только localhostинтерфейс.

Чтобы изменить его, вы можете посмотреть bind-addressзначение в mysqldразделе вашего my.cnfфайла.


Также стоит проверить, действителен ли номер порта. Несоответствие :3306и :3307может привести к ошибке 111 тоже.
— NXT

2
@ NXT, я даже не знаю, может ли mysql прослушивать разные порты на разных интерфейсах, но это очень маловероятный сценарий (учитывая симптомы в исходном посте), даже если это возможно. Тогда могут быть правила брандмауэра и т. Д. Есть много способов достичь этого, но вероятность отличается ...
— Майкл Крелин - хакер

Не всегда это значит. В моих my.cnfфайлах нет ни строк, bind-addressни skip-networkingстрок, и все же я получаю ту же ошибку. Брандмауэр также не установлен. Закончились идеи.
— CoderGuy123

Ну, 111 всегда означает, что соединение отказано :) И только localhost-это в данном конкретном случае из-за других доказательств. Если вы предоставите более подробную информацию о вашем деле, я могу помочь? Кроме того, в зависимости от вашей системы в настоящее время вы, вероятно, будете иметь конфигурацию, разбросанную по нескольким файлам.
— Майкл Крелин - хакер

10

Если все предыдущие ответы не дали никакого решения, вам следует проверить свои привилегии пользователя.

Если вы можете войти в систему как rootmysql, то вы должны добавить это:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY  '***';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.100' IDENTIFIED BY  '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Затем попробуйте подключиться снова, используя mysql -ubeer -pbeer -h192.168.1.100. Он должен работать.


17
я не думаю, что ошибка, связанная с привилегиями пользователя, выдаст ошибку 111.
— ufk

1
Это действительно сработало, и я тоже получил ошибку 111.
— Борджанте

похоже, что это лучшее решение, чем открытие mysql для всей сети, закомментировав строку 127.0.0.1. это должно быть лучшим решением.
— nyxee

7

Если вы используете cPanel / WHM, убедитесь, что IP включен в белый список в брандмауэре. Вам также необходимо добавить этот IP-адрес в список удаленных IP-адресов SQL в учетной записи cPanel, к которой вы пытаетесь подключиться.


1
Хорошее «сказать», чтобы увидеть, если это брандмауэр, вызывающий ошибку, это то, что потребуется много времени, чтобы ошибка была возвращена. Если MySQL вызывает проблемы, ответ должен быть практически мгновенным.
— ...

Можете ли вы объяснить, как это делается?
— Пользователь
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.