User 13204940 Ответов: 3

Mysql: соединение не удалось установить, потому что целевая машина активно отказалась от него.


У меня возникли проблемы с подключением к серверу MySQL на Raspberry Pi из Windows с помощью PHP.

что я сделал:

На Пи:
iptables -I INPUT -j ACCEPT


Пи и ПК находятся в одной сети.

Код, который я использую, может прекрасно подключаться к другим серверам. Только мне удалось протестировать серверы за пределами этой сети.

Я могу войти в систему с теми же учетными данными, которые я использую в файле PHP, используя adminer на pi.

Пользователь, с которым я пытаюсь войти в систему, имеет все права доступа к таблице с IP-адреса"%".

Обе машины могут пинговать друг друга.


Любая помощь будет оценена по достоинству.

Что я уже пробовал:

Все, что упоминается в вопросе, поиск в интернете безрезультатен.

Christiaan van Bergen

Использовали ли вы "привилегии Флеша", чтобы изменения вступили в силу?

[no name]

Да, и именно поэтому я могу просто отлично использовать базу данных в adminer, используя одного и того же пользователя

Christiaan van Bergen

Так что все работает, но дистанционно. Любой другой брандмауэр или netfilter работает на pi? Проверьте запущенные процессы. Запустите проверку открытых портов и программ:
$ netstat --tcp --прослушивание --программы --числовые

[no name]

Proto Recv-Q Send-Q локальный адрес внешний адрес состояние PID/имя программы
tcp 0 0 127.0.0.1:3306 0.0.0.0:* слушайте 503/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* прослушивание 355/sshd
tcp6 0 0 :::80 :::* слушайте 483/apache2
tcp6 0 0 :::22 :::* слушайте 355/sshd

[no name]

Я даже могу получить доступ к веб-серверу на pi с этого ПК, просто не mysql

Christiaan van Bergen

Да, но ваш mysqld слушает только localhost:3306 . Сравните это с записью вашего веб-сервера apache. Этот человек прослушивает все ip-адреса на порту 80.

[no name]

О боже, как я могу позволить ему слушать на всех IP-адресах?

Christiaan van Bergen

;-)

3 Ответов

Рейтинг:
6

Christiaan van Bergen

В вашей конфигурации mysql /etc/mysql/my.conf закомментируйте следующую строку:

bind-address=
Когда вы это сделаете, он будет привязан ко всем адресам. Также убедитесь, что в вашем файле my.cnf не включена функция skip-networking.


Рейтинг:
25

Jochen Arndt

Сервер MySQL на Pi, вероятно, не прослушивает сетевой интерфейс. По соображениям безопасности по умолчанию прослушивается только интерфейс loopback / local host / 127.0.0.1.

Общее расположение конфигурационного файла MySQL таково /etc/mysql/my.cnf. Если это содержит строку

bind-address     127.0.0.1
прокомментируйте это или измените на
bind-address     0.0.0.0


[no name]

Этот файл не содержит этой строки, только:

[сервер клиента]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

Jochen Arndt

Затем найдите файл my.cnf в этих каталогах.
Этот параметр будет находиться в разделе [mysqld].

[no name]

Ах, прекрасно, нашел его.

Рейтинг:
2

User 13204940

Для других, чтобы увидеть, решение было таково;

Изменить привязку-адреса 0.0.0.0 в:

/etc/mysql/mariadb.conf.d/50-server.cnf