我有一个工作的mysql(mariadb)服务器在我的raspberry pi上运行。当我想从本地网络连接到它时,它工作正常。
我的规格如下:
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)
但我希望能够访问它不仅从我的本地网络我希望能够访问它从世界各地。我该怎么做?
1条答案
按热度按时间isr3a4wc1#
我不建议你向全世界公开数据库。通常,数据库将位于提供网页、web服务(或rest调用)的应用服务器后面。此应用服务器将根据需要读取或写入数据库。
话虽如此,从技术上讲,公开数据库是可能的。再说一次,不要这样做。。。但如果你必须:
将引擎配置为服务于远程主机,而不仅仅是本地应用程序:
并将绑定地址设置为:
然后,重新启动发动机:
创建一个可以从任何地方访问的mariadb用户(使用
@'%'
),例如:授予此用户对数据库的访问权限(假设您已经创建了数据库):
最后,打开你的家庭防火墙。进入路由器的管理页面,找到“端口转发”部分。在那里,添加一个规则来侦听端口3306(tcp)的世界,并将其重定向到本地raspberry pi ip地址。保存规则。您可能需要重新启动路由器。
就这样。你的raspberri pi数据库现在正在收听世界新闻。我建议至少在连接上配置ssl,这样密码(和数据)就不会以纯文本的形式通过网络发送。
额外的,同样的价格:听哪个地址,你可能会问?您的isp看到的家庭地址。现在,我可以用一个假域名,以防ip的变化,你可能会问?您可以使用免费的dns服务,如duckdns.org。它是免费的,就像一个迷人的拉斯波贝里皮(我用它从2015年开始)。