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

如何在Raspberry Pi上打开MySQL进行外部/远程连接?,mysql,raspberry-pi,remote-connection,Mysql,Raspberry Pi,Remote Connection,我有一个树莓圆周率指数,为家庭酿造活动存储温度数据。我正在我的计算机上制作一个SpringMVC应用程序,我想点击数据。我的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

我有一个树莓圆周率指数,为家庭酿造活动存储温度数据。我正在我的计算机上制作一个SpringMVC应用程序,我想点击数据。我的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?

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

编辑MySQL配置

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

sudo nano /etc/mysql/my.cnf
查找
[mysqld]
部分。您需要更改的行是
绑定地址
,它应该设置为默认值
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>';
将。*上的所有权限授予由“”标识的“@”;
  • 这些参数是在上一步中用于创建用户的参数
  • *将授予对指定数据库中所有表的访问权限。或者,您可以指定一个特定的表
  • 您可能只想通过授予相关特权来加强安全性,但这应该足以测试它是否有效

希望能做到

以下内容对我很有用,这是我在instructable上找到的一条评论:

  • 使用以下命令授予对远程计算机的访问权限:
    Grant ALL ON*.*到'root'@'192.168.1.%'由'your_password_here'标识(我使用192.168.1.%,这样网络上的任何计算机都可以连接到它)
  • 进入my.cnf文件(
    sudo nano/etc/mysql/my.cnf
    )并查找“bind address”并将其注释掉(在行前放一个#)
  • 重新加载MySQL配置(
    服务MySQL重新加载
  • 重新启动MySQL服务器(
    服务MySQL重新启动

  • 如果您的问题是无法在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选项将**上的所有权限授予由“beta”标识的“root”@“%”

    这里“root”是mysql用户,“beta”是密码,这里为“root”设置了权限。相应地更改它,并在mysql cli中执行上述查询


    祝你好运

    为什么当被低估的答案就在这里时,整个堆栈溢出都是废话?你不需要另外做
    flush特权