如何在我的Raspberry Pi上打开外部/远程连接的MySQL?

Mat*_*sen 21 mysql remote-connection raspberry-pi

我有一个Raspberry Pi,可存储自制活动的温度数据.我正在我的计算机上创建一个Spring MVC应用程序,我想点击数据.我的Pi和我的电脑都在本地网络上.我可以完美地将SSH和FTP连接到我的RPi中.

mysql --192.168.1.102 --u root -p db
Run Code Online (Sandbox Code Playgroud)

导致"无法连接到'192.168.1.102上的MySQL服务器'".

显然,我的Java应用程序也没有连接.

SHOW VARIABLES WHERE VARIABLE_NAME = 'port' ;
Run Code Online (Sandbox Code Playgroud)

返回默认端口3306.

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

Luk*_*iuk 33

我自己最近遇到了同样的问题.我通过以下方式实现了它:

编辑MySQL配置

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

sudo nano /etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)

找到该[mysqld]部分.您需要更改的行bind-address,应该设置为默认值127.0.0.1.您想要编辑此行,而是在网络上显示您的RPi的IP(从您的示例中看起来似乎是192.168.1.102).写下更改.

重启MySQL服务

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

设置MySQL权限

以root身份连接到MySQL实例:

mysql -p -u root
Run Code Online (Sandbox Code Playgroud)

创建用户:

CREATE USER '<username>'@'<ip_address>' IDENTIFIED BY '<password>';  
Run Code Online (Sandbox Code Playgroud)
  • 语法中的撇号(')是必需的
  • IP地址是您尝试连接的网络上设备的IP地址

授予相关数据库和表的权限:

GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'<ip_address>' IDENTIFIED BY '<password>';
Run Code Online (Sandbox Code Playgroud)
  • 参数是您在上一步中用于创建用户的参数
  • *将授予对指定数据库中所有表的访问权限.或者,您可以指定特定的表
  • 您可能希望仅通过授予相关权限来确定安全性,但这应该足以测试它是否有效

应该有希望这样做!

  • 真是个任务,哈哈 (2认同)
  • 当被低估的答案就在这里时,为什么整个堆栈溢出充满了废话? (2认同)

Sau*_*ers 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)