24

我有一个 Raspberry Pi,用于存储自制活动的温度数据。我正在我的计算机上制作一个 Spring MVC 应用程序,我想挖掘数据。我的 Pi 和我的计算机都在本地网络上。我可以完美地通过 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 的设置?

4

3 回答 3

37

我最近自己也遇到了同样的问题。我通过执行以下操作使其工作:

编辑 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>';
  • 这些参数是您在上一步中用于创建用户的参数
  • * 将授予对指定数据库中所有表的访问权限。或者,您可以指定一个特定的表
  • 您可能只想通过授予相关权限来加强安全性,但这应该足以测试它是否有效

那应该有希望做到!

于 2013-09-21T16:29:37.500 回答
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)
于 2014-01-29T22:03:22.497 回答
4

如果您的问题无法在 Raspberry Pi 上远程连接 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中执行上述查询。

祝你好运 !!!

于 2016-10-10T09:55:13.640 回答