MySQL 连接安全

MySQL 连接安全

我有 2 台 Windows 2003 服务器。一台运行带有 Microsoft FastCGI 扩展和 PHP 的 IIS。另一台服务器运行 MySQL 5.1。我想在 IIS 服务器上设置一些 PHP 应用程序,并让它们使用第二台服务器上的数据库。

  • 我需要做什么来加密 MySQL 级别的服务器之间的网络通道/协议?
  • 这是 MySQL 免费版的内置功能吗,还是我需要付费版本?
  • 如果我从运行 MySQL 的 Windows 服务器迁移到 Linux 服务器,配置是否相同?

我知道我可以在网络堆栈的较低级别使用其他类型的加密和措施,但想知道 MySQL 提供什么。

答案1

MySQL(标准、开源版本)提供 SSL 加密。

首先,您要查看它是否已启用。您可以通过从 mysql 客户端运行以下命令来执行此操作:

SHOW VARIABLES LIKE 'have_ssl';

如果值为“YES”,则表明您的版本已将其编译在内。如果值为“DISABLED”,则表明您已将其编译在内,但需要添加下面详述的证书信息。如果值为其他值,则表明您需要获取包含该值的版本。

要启用它,您需要修改 my.cnf 文件,以便它在 [mysqld] 部分包含以下内容:

ssl-ca=ca-cert.pem
ssl-cert=my_cert.pem
ssl-key=my_key.pem

显然,您需要将值更改为适当的值。所有证书都应采用标准 PEM 格式。

我并不是一名 PHP 开发人员,但应该有一种方法可以在连接调用中启用此功能。

答案2

Mysql 原生支持 SSL,这里是参考来自文档。棘手的部分可能是获取带有支持 SSL 的 mysql 驱动程序的 PHP 版本。我不确定,但代码可能需要使用mysqli* 而不是 mysql* 或 PDO。

答案3

MySQL 二进制文件(大多数 Windows 用户从中安装)仅支持 yaSSL,而 yaSSL 对 Windows 的支持不太可靠。

如果您想使用 SSL 运行它,您可能需要为您的 Windows 版本找到一个可用的 yaSSL 安装或在 Linux 上运行它。

相关内容