gpt4 book ai didi

mysql - 将 Compute Engine 上的 PHP 代码安全地连接到 Cloud SQL

转载 作者:行者123 更新时间:2023-11-30 00:26:51 25 4
gpt4 key购买 nike

我正在尝试将计算实例上运行的 drupal cms 连接到 Cloud SQL 数据库,但我尝试的每个组合都失败了。我可以从另一台服务器连接到 Cloud SQl,但我不确定从我的实例到 Cloud SQL 的 MySQL 连接采用什么路径,但也希望配置尽可能安全的与数据库服务器的连接

这是我的配置

服务器

  • 已分配外部 IP 地址的 Cloud SQL。还授权计算实例的外部IP地址和独立服务器的IP连接地址。
  • 具有外部 IP 地址的计算实例在互联网上成功运行 apache 和 php
  • 尝试按照 https://drupal.org/documentation/install/run-script 的步骤 4 从网络浏览器配置数据库连接对于在计算实例上运行的 drupal 代码
  • 具有可访问互联网 IP 地址的独立服务器

用户

  • 已设置 SQL Root 用户密码并成功用于连接使用工作台的独立服务器
  • 来自主机 % 的 Db 用户已创建用于访问 drupal 数据库,并且可以使用工作台从独立服务器成功连接
  • 同一数据库用户无法从计算实例连接

网络

  • 在计算实例上运行 ifconfig 仅显示私有(private) IP 地址
  • 我已在 Google 防火墙和实例防火墙上打开 3306

我的问题是如何通过提供 dbname、dbusername、dbuserpwd、host(IPAddress) 让计算实例连接到云 SQL,以便它与工作台完全一样连接,但仍然尽可能受到限制?问题是否在于计算实例的配置、提供的连接设置或云 SQL

最佳答案

这看起来是一个 drupal 问题(主机值被安装程序丢弃或省略)和一个 SELinux 保护执行问题(限制来 self 使用的 guest 操作系统 CentOS 的远程数据库连接)的组合。

将文件添加到 Web 根文件夹后,还可能需要使用正确的 SELinux 标签重新标记文件

解决方法:自己编辑 drupal 7 settings.php 以包含 mysql 连接

$databases = array (
'default' =>
array (
'default' =>
array (
'database' => 'dbname',
'username' => 'dbuser',
'password' => 'dbpassword',
'host' => 'CloudSQLIPAddress',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
),
),
);

并从运行 CentOS 的 GCE 实例内的 ssh 运行以下命令以允许数据库连接,我认为此设置不会在服务器重新启动后继续存在,但我可以根据我的需要使用它

 setsebool httpd_can_network_connect_db=1

要将 SElinux 上下文重新应用于复制的文件,请运行此

restorecon -rv /var/www/html 

关于mysql - 将 Compute Engine 上的 PHP 代码安全地连接到 Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com