MySQL MariaDB 服务器树莓派远程访问

标签 mysql sql linux raspberry-pi mariadb

我的树莓派上运行着一个工作的 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)

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

最佳答案

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

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

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

     sudo vi /etc/mysql/my.cnf
    

    并将绑定(bind)地址设置为:

     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 地址。保存规则。您可能需要重新启动路由器。

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

额外的,同样的价格:听哪个地址,你可能会问? ISP 看到的您的家庭住址。现在,您可能会问,如果 IP 发生变化,我可以使用域名吗?您可以使用免费的 DNS 服务,例如 duckdns.org。它是免费的,在 raspoberry pi 中就像一个魅力(我从 2015 年开始使用它)。

关于MySQL MariaDB 服务器树莓派远程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62564439/

相关文章:

sql - 在 PostgreSQL 中查询具有不同年份属性的顶级元素

linux - Seam 上的 Linux 问题

MySQL 索引长时间运行的查询 - 是否使用了键?

mysql - 排序依据和分组依据

php - 使用限制更快地导航 SQL 表

mysql - 具有空值的复杂 mysql 内部连接查询

sql - SELECT 1 和 SELECT COUNT(1) 在 Oracle SQL 中有何作用?

php - 无法将 php 链接到数据库

linux - 如何为 VM 资源 azurerm_virtual_machine_scale_set 的每个实例执行具有不同参数的脚本?

linux - LXD 容器内的 DNS 解析不起作用