Не удается подключиться к серверу 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 в этом случае. Я не знаю, как подключиться к этой базе данных с другого компьютера.

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

wearetherock
источник

Ответы:

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. Он должен работать.

xnome
источник
17
я не думаю, что ошибка, связанная с привилегиями пользователя, выдаст ошибку 111.
ufk
1
Это действительно сработало, и я тоже получил ошибку 111.
Борджанте
похоже, что это лучшее решение, чем открытие mysql для всей сети, закомментировав строку 127.0.0.1. это должно быть лучшим решением.
nyxee
7

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

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