Я пытался подключиться с веб-сервера Ubuntu версии 16.04 (работает на экземпляре 1 AWS, с PHP 7.0.33 и Apache 2.7.18), взаимодействующего с сервером базы данных с использованием MySQL 8.0.19 работает на другом экземпляре AWS (работает на Ubuntu версии 16.04).
Я настроил сервер базы данных и настроил его следующим образом:
Я редактирую файл / 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
Я успешно проверил подключение к этому серверу БД с веб-сервера экземпляр клиента:
mysql -u Master -p -h '1.26.4.44'
Однако, когда я использую следующий фрагмент кода 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 к удаленному серверу базы данных.
Чего мне не хватает на стороне клиента веб-сервера, чтобы позволить подключиться к удаленному серверу БД из кода php?