如何在树莓派上开启MySQL以接受外部/远程连接?

26

我有一个树莓派,用于存储家庭酿造活动的温度数据。我正在我的电脑上制作一个Spring MVC应用程序,并希望获取这些数据。我的树莓派和电脑都在本地网络中。我可以完美地通过SSH和FTP登录到我的RPi。

mysql --192.168.1.102 --u root -p db

引起“无法连接到 '192.168.1.102' 上的MySQL服务器”。

我的Java应用程序也显然没有连接上。

SHOW VARIABLES WHERE VARIABLE_NAME = 'port' ;

返回默认端口3306。

是否有必须启用的设置,以允许远程连接到MySQL?

3个回答

43

最近我自己也遇到了同样的问题。通过以下步骤,我解决了这个问题:

编辑MySQL配置

默认情况下,MySQL未配置为接受远程连接。您可以通过修改配置文件来启用远程连接:

sudo nano /etc/mysql/my.cnf

找到[mysqld]部分。你需要修改的行是bind-address,应将其设置为默认值127.0.0.1。你想要编辑此行以显示RPi在网络上的IP地址(从你的示例中似乎是192.168.1.102)。编写更改。

重新启动MySQL服务

sudo service mysql restart

设置MySQL权限

以root身份连接到您的MySQL实例:

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
为什么整个Stack Overflow都充斥着胡言乱语,而被低估的答案就在这里? - Havnar
你不需要另外执行 flush privileges; 吗? - hannojg

5
以下是我个人的经验,感谢这篇文章下的一位评论者提供的帮助:
  1. 使用以下代码授权远程机器访问: GRANT ALL ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'your_password_here';(我使用了 192.168.1.% 以使我的网络上的任何计算机都可以连接)
  2. 进入 my.cnf 文件 (sudo nano /etc/mysql/my.cnf) 并查找 "bind-address",将其注释掉(在行前加 # 号)
  3. 重新加载 MySQL 配置 (service mysql reload)
  4. 重启 MySQL 服务 (service mysql restart)

4
如果您无法远程连接树莓派上的MySQL,则尝试以下步骤。我曾遇到同样的问题,并通过执行以下命令解决了它。
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 //以用户'root'身份登录mysql cli

5) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'beta' WITH GRANT OPTION;

这里的 'root' 是mysql用户,'beta' 是密码,这里为 'root' 设置了权限。根据需要更改并在mysql cli中执行上述查询。

祝好运!!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接