【问题标题】:MySQL MariaDB Server Raspberry Pi remote accessMySQL MariaDB 服务器树莓派远程访问
【发布时间】:2020-10-15 06:24:07
【问题描述】:

我的树莓派上运行着一个工作的 MySQL (MariaDB) 服务器。当我想从本地网络连接到它时,它工作正常。
我的规格如下:

MariaDB [mysql]> SHOW VARIABLES LIKE "%version%";
+-----------------------------------+------------------------------------------+
| Variable_name                     | Value                                    |
+-----------------------------------+------------------------------------------+
| in_predicate_conversion_threshold | 1000                                     |
| innodb_version                    | 10.3.22                                  |
| protocol_version                  | 10                                       |
| slave_type_conversions            |                                          |
| system_versioning_alter_history   | ERROR                                    |
| system_versioning_asof            | DEFAULT                                  |
| version                           | 10.3.22-MariaDB-0+deb10u1                |
| version_comment                   | Raspbian 10                              |
| version_compile_machine           | armv8l                                   |
| version_compile_os                | debian-linux-gnueabihf                   |
| version_malloc_library            | system                                   |
| version_source_revision           | 0152704ae3f857668dbc05803950adcf131b8685 |
| version_ssl_library               | YaSSL 2.4.4                              |
| wsrep_patch_version               | wsrep_25.24                              |
+-----------------------------------+------------------------------------------+
14 rows in set (0.013 sec)

但我不仅希望能够从我的本地网络访问它,我还希望能够从世界各地访问它。我该怎么做?

【问题讨论】:

    标签: mysql sql linux raspberry-pi mariadb


    【解决方案1】:

    我不建议您向世界公开数据库。通常,数据库将位于为网页、Web 服务(或休息调用)提供服务的应用服务器之后。此应用服务器将根据需要读取或写入数据库。

    话虽如此,公开数据库在技术上是可行的。再次,不要这样做。 ...但如果你必须:

    • 将引擎配置为为远程主机提供服务,而不仅仅是本地应用:

       sudo vi /etc/mysql/my.cnf
      

      并将绑定地址设置为:

       bind-address            = 0.0.0.0
      

      然后,重新启动引擎:

       sudo service mysql restart
      
    • 创建一个可以从任何地方访问的 MariaDB 用户(使用 @'%'),如下所示:

       create user 'myuser'@'%' identified by 'mypass';
      
    • 授予此用户访问数据库的权限(假设您已经创建了数据库):

       grant all on my_database.* to 'myuser'@'%';
      
    • 最后,打开您的家庭防火墙。进入路由器的管理页面,找到“端口转发”部分。在那里,添加一个规则来监听世界到端口 3306 (TCP) 并将其重定向到您的本地树莓派 IP 地址。保存规则。您可能需要重新启动路由器。

    就是这样。您的树莓派数据库现在正在监听世界。我建议至少在连接上配置 SSL,这样密码(和数据)就不会通过网络以纯文本形式发送。

    额外,价格相同: 您可能会问,在哪个地址收听? ISP 看到的您的家庭住址。现在,我可以使用 fake 域名以防 IP 更改,您可能会问?您可以使用免费的 DNS 服务,例如 duckdns.org。它是免费的,就像树莓派中的魅力一样(我从 2015 年开始使用它)。

    【讨论】:

    • 我还有一个问题。我有一个大数据表,我希望能够与来自世界各地的许多人一起使用它。如何构建托管此数据的保存服务器?带有 mariadb 的树莓派是正确的选择吗?
    • @SebNik 出于测试目的,MariaDB 可以像任何其他托管服务一样正常工作,但性能较低(当然)。如果您正在为世界各地的无数客户提供服务,那么托管服务就是您的最佳选择。在性能和安全性方面。您不想将您的家庭网络暴露给全世界。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多