Вопрос или проблема
Я установил сервер MySQL на Linux с IP = 192.168.1.100, но когда я пытаюсь подключиться к этому IP, всегда ошибка (111). Но использование localhost и 127.0.0.1 работает.
beer@beer-laptop# ifconfig | grep "inet addr" inet addr:127.0.0.1 Mask:255.0.0.0 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 beer@beer-laptop# mysql -ubeer -pbeer -h192.168.1.100 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111) beer@beer-laptop# mysql -ubeer -pbeer -hlocalhost Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 160 Server version: 5.1.31-1ubuntu2 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> beer@beer-laptop# mysql -ubeer -pbeer -h127.0.0.1 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 161 Server version: 5.1.31-1ubuntu2 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Подключение с другого компьютера также дает ошибку 111.
another@another-laptop# mysql -ubeer -pbeer -h192.168.1.100 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111)
В чем разница между использованием localhost/127.0.0.1 и 192.168.1.100 в этом случае?
Я не знаю, как подключиться к этой базе данных с другого компьютера.
Помогите, пожалуйста.
Спасибо.
Это, вероятно, означает, что ваш сервер MySQL слушает только интерфейс localhost.
Если у вас есть строки такие как:
bind-address = 127.0.0.1
В вашем my.cnf
конфигурационном файле, вам следует закомментировать их (добавьте # в начале строк) и перезапустить MySQL.
sudo service mysql restart
Конечно, чтобы сделать это, вы должны быть администратором сервера.
111 означает соединение отклонено, что, в свою очередь, означает, что ваш mysqld слушает только интерфейс localhost
.
Чтобы изменить это, вам нужно посмотреть значение bind-address
в разделе mysqld
вашего файла my.cnf
.
Если все предыдущие ответы не дали решения,
вам следует проверить привилегии вашего пользователя.
Если вы могли войти как root
в MySQL,
тогда вам нужно добавить:
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
. Это должно сработать.
Если вы используете cPanel/WHM, убедитесь, что IP-адрес добавлен в белый список в файрволе. Вам также нужно добавить этот IP-адрес в список удаленных SQL IP в учетной записи cPanel, к которой вы пытаетесь подключиться.
Ответ или решение
Ошибка подключения к серверу MySQL с номером 111 указывает на то, что не удается установить соединение с сервером. В вашем случае, вы можете подключаться к серверу MySQL через localhost
и 127.0.0.1
, но не через IP-адрес 192.168.1.100
. Это говорит о том, что сервер настроен на прослушивание только локальных интерфейсов.
Основные причины ошибки и решения
-
Настройка bind-address в конфигурации MySQL:
В файле конфигурацииmy.cnf
(обычно находится в/etc/mysql/my.cnf
или/etc/my.cnf
) может быть задан параметрbind-address
, ограничивающий доступ. Чтобы сервер MySQL мог принимать подключения с других IP, вам необходимо изменить или прокомментировать этот параметр. Найдите строку, содержащую:bind-address = 127.0.0.1
и замените её на:
# bind-address = 127.0.0.1
или установите её значение на
0.0.0.0
для прослушивания всех интерфейсов:bind-address = 0.0.0.0
После изменения сохраните файл и перезапустите MySQL с помощью команды:
sudo service mysql restart
-
Проверка прав пользователя:
Убедитесь, что пользователю, с которым вы пытаетесь подключиться (например,beer
), даны права на доступ с указанного IP-адреса. Заходите в MySQL под учетной записью, которая имеет права на создание пользователей, и выполните следующие команды:CREATE USER 'beer'@'192.168.1.%' IDENTIFIED BY 'your_password'; -- замените 'your_password' на ваш пароль GRANT ALL PRIVILEGES ON *.* TO 'beer'@'192.168.1.%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Это создаст пользователя
beer
, которому разрешается подключаться с любого устройства в сети 192.168.1.*, и даст ему все необходимые права. -
Проверка брандмауэра:
Если вы используете брандмауэр (например, UFW на Ubuntu), убедитесь, что порт MySQL (по умолчанию 3306) открыт. Выполните команду:sudo ufw allow 3306
Убедитесь, что правил брандмауэра достаточно для получения входящего трафика на этот порт.
-
Проверка состояния сервера:
Убедитесь, что сервер MySQL работает и слушает на правильных интерфейсах. Выполните следующую команду:sudo netstat -tuln | grep mysql
Вы должны увидеть строчку, где указан порт 3306 и адрес, на котором сервер прослушивает подключения (например, 0.0.0.0).
Заключение
Если после выполнения всех вышеуказанных шагов проблема все еще не решена, необходимо проверить логи MySQL для получения более детальной информации об ошибках подключения. Логи можно найти обычно по пути /var/log/mysql/error.log
. Они могут содержать подсказки, указания на неправильные настройки или конфликты.
Следуя этим рекомендациям, вы сможете устранить проблему с ошибкой 111 при подключении к серверу MySQL и обеспечить стабильный доступ к базе данных как с вашего локального компьютера, так и с других устройств в вашей сети.