Я настроил RDS и EC2 на веб-сервисах Amazon. RDS находится в одной группе безопасности, а EC2 — в другой. Группа безопасности EC2 принимает трафик http, https и ssh (хотя я пытался настроить его для всего трафика) из любого места, в то время как группа безопасности RDS принимает весь входящий трафик от себя и от группы безопасности EC2.
У меня есть несколько файлов php на EC2, с
$server = $_SERVER['DB_SERVER'];
$username = $_SERVER['DB_USERNAME'];
$password = $_SERVER['DB_PASSWORD'];
$database = $_SERVER['DB_DATABASE'];
$connection = new mysqli($server, $username, $password, $database);
echo $connection->connect_error;
где DB_SERVER и т. д. перечислены в dbinfo.inc в /var/www/inc/dbinfo.inc согласно этому руководству: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html
Это дает ответ «Нет такого файла или каталога», который мне говорят, потому что файл mysql.sock не найден.
В /etc/my.cnf у меня есть:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
*bunch of comments*
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
но mysql.sock не существует в / var / lib / mysql (или / var / lib / mysql / mysql)
Бег
find . mysql.sock
а также
find . mysqld.sock
оба дают «Нет такого файла или каталога»
Спасибо за вашу помощь
Я столкнулся с той же проблемой, когда пытался развернуть php
заявка на aws
ec2
и размещение базы данных на rds
Прежде всего, не следуйте документации Amazon для подключения rds
база данных.
причина $_server['anything']
возвращает пустое значение Так
$server = $_SERVER['DB_SERVER'];
здесь $server
содержит только пустое значение
Вместо этого используйте следующий код:
<?php
$dbhost = 'your rds instance endpoint';
$dbport = 'port numberdefault 3306 ';
$dbname = 'name of data base';
$charset = 'utf8' ;
$dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset= {$charset}";
$username = 'username ';
$password = 'password';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "your sql query";
$pdo->exec($sql);
echo "successfully connected";
}
catch(PDOException $e)
{
t;
echo "Connection failed: <br> ". $e->getMessage();
}
$conn = null;
?>
Других решений пока нет …