【发布时间】:2020-06-02 21:54:15
【问题描述】:
我一直在努力从 Ubuntu 16.04 版网络服务器进行连接 (在 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 代码 sn-p 打开与数据库服务器的连接时,出现错误(见下文):
// 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