从Web服务器连接到远程MySQL数据库服务器时出错

问题描述 投票:-1回答:1

我一直在努力从Ubuntu 16.04版Web服务器进行连接(在1个AWS实例上运行,使用PHP 7.0.33和Apache 2.7.18)使用在另一个AWS实例(运行Ubuntu版本16.04)上运行的MySQL 8.0.19与数据库服务器进行通信。

我设置了数据库服务器并对其进行了如下配置:

我编辑文件/etc/mysql/mysql.conf.d/mysqld.cnf

我在[mysqld]部分添加以下内容[mysqld]

require_secure_transport = on

我保存文件并从控制台发出问题:

sudo mysql_ssl_rsa_setup --uid=mysql

然后我用以下命令重新启动mysql:

sudo systemctl restart mysql

我已经在此数据库服务器上创建了一个数据库和表。

我还在此数据库服务器上创建了一个远程用户,如下所示(IP地址和用户是虚构的:]

CREATE USER 'Master'@'1.26.4.44' IDENTIFIED BY 'admin';

GRANT ALL PRIVILEGES ON sample_data_base.* TO ' Master'@'1.26.4.44';

FLUSH PRIVILEGES;

Exit

我已成功从Web服务器客户端实例测试到此数据库服务器的连接性:

mysql -u Master -p   -h '1.26.4.44'

但是,当我使用Web服务器客户端实例中的以下PHP代码段时打开与数据库服务器的连接,出现错误(如下所示):

// set up for  remote DB access     
  $dbhost  = '1.26.4.44';    // Unlikely to require changing
  $dbname  = 'sample_data_base';   // Modify these...
  $dbuser  = 'Master';   // ...variables according
  $dbpass  = "admin";   // ...to your installation
  $appname = "test_app"; // ...and preference

$dbconnection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

   if ( !$dbconnection) 
  {
      echo "connection failed   ";
      die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
  }

错误是:

Connect Error (3159) Connections using insecure transport are prohibited while --require_secure_transport=ON

就像供参考,当我注释掉数据库服务器中的行时,文件/etc/mysql/mysql.conf.d/mysqld.cnf

# require_secure_transport = on

与远程数据库服务器的php代码连接没有问题。

我在Web服务器客户端上缺少什么要让我从php代码连接到远程数据库服务器?

php mysql amazon-ec2 ubuntu-16.04
1个回答
0
投票

您需要在数据库设置中进行其他配置:

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set(
    '/etc/mysql/ssl/client-key.pem',
    '/etc/mysql/ssl/client-cert.pem',
    '/etc/mysql/ssl/ca-cert.pem',
    NULL,
    NULL);

$link = mysqli_real_connect(
        $db, 'ip', 'user', 'password', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);

if (!$link)
{
    die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
} else {
    // your queries should be here
     $db->close();
}
© www.soinside.com 2019 - 2024. All rights reserved.