繁体   English   中英

连接到Cloud MySQL实例

[英]Connecting to Cloud MySQL Instance

我是Web开发的新手。 我目前正在尝试创建一个网站,允许用户提交信息并将其存储在数据库中。 我的域名和托管使用GoDaddy,并且我将Google Cloud Platform用于云数据库存储。

我已经成功地弄清楚了如何将HTML表单数据存储到本地数据库(PhpMyAdmin)中。 我还使用MySQL Workbench成功将我的Google Cloud实例与另一个本地数据库连接。

我无法弄清楚如何使所有内容连接起来。 我需要将Google Cloud实例与GoDaddy连接起来吗? 我应该只使用GoDaddy的数据库产品吗? 我尝试将实例的IPv4地址作为我的PHP连接代码中的“主机名”,该代码已上传到GoDaddy,但未连接,我也不知道为什么。 我什至不知道这是你应该做的吗?

我已经读过有关必须允许特定IP地址的权限来存储信息的信息,但是这对我来说就像在现实世界中一样没有意义,我可以简单地访问网站,填写表格,然后将我的信息发送到那家公司的远程数据库。 这就是我要为我的网站完成的工作。 谢谢。

PS:我使用PHP作为服务器端语言。

这是可用于连接到Google Cloud SQL实例的常规功能:

function connectSQL( $dbProject, $dbRegion, $dbInstance, $dbIP, $dbName, $dbUsername, $dbPassword, $ssl = TRUE, $persistent = FALSE, $appEngine = FALSE ) {
  // $dbProject is the project that owns the database, which may differ from the project using the database

  // Create a connection
  $db = NULL;
  if ( $appEngine ) {
    // Connect from App Engine
    if ( $persistent ) {
      try {
        $db = new pdo( "mysql:unix_socket=/cloudsql/$dbProject:$dbRegion:$dbInstance;dbname=$dbName", $dbUsername, $dbPassword, array( PDO::ATTR_PERSISTENT => TRUE ) );
      } catch(PDOException $ex) {
        echoArr( $ex );
        return FALSE;
      }
    } else {
      try {
        $db = new pdo( "mysql:unix_socket=/cloudsql/$dbProject:$dbRegion:$dbInstance;dbname=$dbName", $dbUsername, $dbPassword );
      } catch(PDOException $ex) {
        echoArr( $ex );
        return FALSE;
      }
    }
  } else {
    // Connect from a non-App Engine environment (localhost, other hosting, etc.)
    if ( $persistent ) {
      if ( !$ssl ) {
        try{
            $db = new pdo( 'mysql:host='.$dbIP.':3306;dbname='.$dbName, $dbUsername, $dbPassword, array( PDO::ATTR_PERSISTENT => TRUE ) );
          $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $ex) {
          echoArr( $ex );
          return FALSE;
        }
      } else {
        try{
            $db = new pdo( 'mysql:host='.$dbIP.':3306;dbname='.$dbName, $dbUsername, $dbPassword, array(
              PDO::MYSQL_ATTR_SSL_KEY=>'/path/to/client-key.pem',
              PDO::MYSQL_ATTR_SSL_CERT=>'/path/to/client-cert.pem',
              PDO::MYSQL_ATTR_SSL_CA=>'/path/to/server-ca.pem',
              PDO::ATTR_PERSISTENT => TRUE
              )
          );
          $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $ex) {
          echoArr( $ex );
          return FALSE;
        }
      }
    } else {
      if ( !$ssl ) {
        try{
          $db = new pdo( 'mysql:host='.$dbIP.':3306;dbname='.$dbName, $dbUsername, $dbPassword );
          $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $ex) {
          echoArr( $ex );
          return FALSE;
        }
      } else {
        try{
            $db = new pdo( 'mysql:host='.$dbIP.':3306;dbname='.$dbName, $dbUsername, $dbPassword, array(
              PDO::MYSQL_ATTR_SSL_KEY=>'/path/to/client-key.pem',
              PDO::MYSQL_ATTR_SSL_CERT=>'/path/to/client-cert.pem',
              PDO::MYSQL_ATTR_SSL_CA=>'/path/to/server-ca.pem'
              )
          );
          $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $ex) {
          echoArr( $ex );
          return FALSE;
        }
      }
    }
  }

  return $db;

}

无论脚本托管在何处,都可以使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM