我在树莓派上运行了一个可运行的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 ``` 并将绑定地址设置为: ```sql bind-address = 0.0.0.0 ``` 然后,重新启动引擎: ```sql sudo service mysql restart
@'%'
create user 'myuser'@'%' identified by 'mypass';
grant all on my_database.* to 'myuser'@'%';
就是这样。您的 raspberri pi 数据库现在正在聆听世界。我建议至少在连接上配置 SSL,这样密码(和数据)就不会以纯文本形式通过网络发送。
额外的,同样的价格:你可能会问,听哪个地址?您的 ISP 看到的家庭住址。现在,您可能会问,如果 IP 发生变化,我可以使用假域名吗?您可以使用免费的 DNS 服务,例如duckdns.org。它是免费的,就像树莓派中的魅力一样(我从 2015 年开始使用它)。