admin

MySQL MariaDB Server Raspberry Pi远程访问

sql

我在树莓派上运行了一个可运行的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)

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


阅读 255

收藏
2021-07-01

共1个答案

admin

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

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

  • 配置引擎以服务远程主机,而不仅仅是本地应用程序:
  sudo vi /etc/mysql/my.cnf
 ```

  并将绑定地址设置为:

  ```sql
   bind-address            = 0.0.0.0
  ```

  然后,重新启动引擎:

```sql
   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。它是免费的,就像树莓派中的魅力一样(我从 2015 年开始使用它)。

2021-07-01