【问题标题】:How do I open up my MySQL on my Raspberry Pi for Outside / Remote Connections?如何在 Raspberry Pi 上打开 MySQL 以进行外部/远程连接?
【发布时间】:2013-09-11 06:07:15
【问题描述】:

我有一个 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 的设置?

【问题讨论】:

    标签: mysql raspberry-pi remote-connection


    【解决方案1】:

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

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

    希望能做到!

    【讨论】:

    • 当被低估的答案就在这里时,为什么整个堆栈溢出充满了废话?
    • 你不需要另外做flush privileges;吗?
    【解决方案2】:

    以下内容对我有用,感谢this instructable 上的评论:

    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)

    【讨论】:

      【解决方案3】:

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

      祝你好运!!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-05
        • 2014-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多