如何从 JavaScript 连接到 MySQL?

Posted

技术标签:

【中文标题】如何从 JavaScript 连接到 MySQL?【英文标题】:How to connect to MySQL from JavaScript? 【发布时间】:2013-05-25 01:25:07 【问题描述】:

我知道要从 javascript 连接到数据库,我需要在纯 JavaScript 代码中提及数据库凭据。因此,对于在线应用程序来说,这将是一个巨大的安全风险。但就我而言,我想编写一个本地存储的小型 JavaScript 应用程序。因此,凭据不会向全世界显示,而只会向我提供应用程序的用户显示,这对我来说是可以接受的。

这背后的动机是我想在没有运行 php 服务器的情况下连接到在线数据库,只需通过嵌入在本地页面中的 JavaScript。我的目标是提供一个用户可以运行的应用程序,不需要 PHP 和服务器,除了数据库服务器。它类似于桌面应用程序,但在浏览器中运行。

如何从 JavaScript 连接到在线 mysql 数据库?我在 Stack Overflow 上发现的所有其他类似问题都建议线程启动器有充分的理由反对这种用法,但没有回答问题。

我听说从 Ja​​vaScript 连接到 MySQL 是不可能的。但是,比如说,用 JavaScript 编写的 Windows 8 Metro Apps 如何处理这个问题呢?

【问题讨论】:

可能重复:***.com/questions/3020751/… 【参考方案1】:

始终需要后端中继器。对于这个问题,您可以设置一个轻量级服务器,使用 node.js 将您的数据库访问请求转发到 mysql 服务器。

【讨论】:

所以我需要一个服务器端脚本,它需要 MySQL 数据库的用户、密码和查询,以便服务器发送请求?为什么我不能直接从 JavaScript 发送请求?对我来说似乎没有技术限制。 出于安全原因,在浏览器中运行的 JavaScript 对本地文件/设备/其他东西的访问非常有限,并且不可能通过 mysql 创建到 mysql 服务器的通用套接字连接。跨度> 我试过了,但我无法向服务器脚本发送 ajax 请求,因为这将是来自本地 JavaScript 的跨站点脚本。【参考方案2】:

如果您专注于特定的网络浏览器,也许您会找到一种解决方法。但是,如果您正在考虑独立于用户代理的本地应用程序,则应遵循标准以达到可预测的行为(或至少是最佳方法)。在W3C standards 中,您有两个存储选项:

Web Storage API:您仅限于键值存储,但非常well supported。Indexed Database API。我没有这方面的经验,但是it's supported。

如果您不想将用户上下文限制为受限机器和用户代理,则可以按照上述建议从标准存储解决方案开始,然后针对更高级的浏览器(甚至可能使用 MySQL!)增强您的应用程序在Progressive Enhancement

【讨论】:

以上是关于如何从 JavaScript 连接到 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Javascript 连接到 XMPP 服务器

如何从 Visual Studio Code 连接到 MySQL 服务器

如何从 Perl 连接到 MySQL?

如何使用自签名证书从 Javascript 连接到 SSL 服务器?

如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

如何从 docker 容器连接到远程 mysql 托管?