Как открыть мой MySQL на моей малине Pi для внешних/удаленных подключений?
У меня есть малина Pi, в которой хранятся данные о температуре для домашнего пивоварения. Я делаю приложение Spring MVC на своем компьютере, и я хочу использовать данные. И мой Pi, и мой компьютер находятся в локальной сети. Я могу полностью настроить SSH и FTP в свой RPi.
mysql --192.168.1.102 --u root -p db
Вызывает "Не удается подключиться к серверу MySQL на 192.168.1.102".
Мое приложение Java не подключается, очевидно.
SHOW VARIABLES WHERE VARIABLE_NAME = 'port' ;
возвращает порт по умолчанию 3306.
Есть ли параметр, который должен быть включен для разрешения удаленных подключений в MySQL?
Ответы
Ответ 1
Недавно у меня была такая же проблема. Я получил его работу, выполнив следующие действия:
Изменить конфигурацию MySQL
По умолчанию MySQL не настроен на прием удаленных подключений. Вы можете включить удаленные подключения, изменив файл конфигурации:
sudo nano /etc/mysql/my.cnf
Найдите раздел [mysqld]
. Строка, которую нужно изменить, - bind-address
, которая должна быть установлена на значение по умолчанию 127.0.0.1
. Вы хотите отредактировать эту строку, чтобы вместо этого отображать IP-адрес вашего RPi в сети (который, кажется, будет 192.168.1.102 из вашего примера). Напишите изменения.
Перезапустить службу MySQL
sudo service mysql restart
Настройка разрешений MySQL
Подключитесь к экземпляру MySQL с правами root:
mysql -p -u root
Создайте пользователя:
CREATE USER '<username>'@'<ip_address>' IDENTIFIED BY '<password>';
- Требуются апострофы (') в синтаксисе
- IP-адрес - это IP-адрес устройства в сети, которую вы пытаетесь подключить, из
Предоставить разрешения для соответствующих баз данных и таблиц:
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'<ip_address>' IDENTIFIED BY '<password>';
- Параметры - это те, которые вы использовали для создания своего пользователя на предыдущем шаге.
- * предоставит доступ ко всем таблицам в указанной базе данных. В качестве альтернативы вы можете указать конкретную таблицу
- Вероятно, вы захотите усилить безопасность, предоставив только соответствующие привилегии, но этого должно быть достаточно, чтобы проверить, что он работает.
Это, надеюсь, сделает это!
Ответ 2
Следующее сработало для меня, любезно предоставленный комментарий this:
- Предоставьте доступ к удаленному компьютеру, используя:
GRANT ALL ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'your_password_here';
(я использовал 192.168.1.%, чтобы любой компьютер в моей сети мог подключиться к нему)
- Перейдите в файл my.cnf(
sudo nano /etc/mysql/my.cnf
) и найдите "bind-address" и прокомментируйте это (поставьте # перед линией)
- Обновить конфигурацию MySQL (
service mysql reload
)
- Перезапустить сервер MySQL (
service mysql restart
)
Ответ 3
Если ваша проблема не позволяет удаленно подключаться к MySQL на малине Pi, попробуйте выполнить следующие шаги. У меня была такая же проблема, и я решил ее решить, выполнив команды ниже.
1) sudo nano /etc/mysql/my.cnf
2) # bind-address = 127.0.0.1
//прокомментируем эту строку
bind-address = 0.0.0.0 //add this line just below above line
3) sudo /etc/init.d/mysql restart
//перезапустить mysql
4) sudo mysql -u root -p
//Войдите в mysql cli как пользователь 'root'
5) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'beta' WITH GRANT OPTION;
Здесь "root" - пользователь mysql, а "бета" - это пароль, и здесь для "root" установлены привилегии. Измените его соответствующим образом и выполните над запросом в mysql cli.
Удачи!!!