Скептичный циник
Миру - мир. А Вам - пломбир!
Доброго времени суток!

В наличии два сервера в сети /24: 2 и 88 соответственно.

Задача: из PHP приложения на 88 забирать данные из MySQL с обоих серверов.

tl;dr:
– bash успешно коннектится и забирает правильные данные
– PDO+стандартный dsn и MySQLi валятся с "Permission denied"
– PDO+socket коннектится, но к локальной базе

Ничто лучше не опишет ситуацию как небольшие тесты:
1. Bash:

[trogwar@centos ~]$ mysql --host="42.42.42.2" --user="foobar" --password='blowfish'
# ... credits ...
mysql> use cooldb
Database changed
mysql> select count(*) from rem_tests;
+----------+
| count(*) |
+----------+
| 98 |
+----------+
1 row in set (0.00 sec)
mysql>


2. PHP + PDO + default dsn:

try {
$dbh = new PDO(
'mysql:host=42.42.42.2;dbname=cooldb',
'foobar',
'blowfish'
);
$sql = 'SELECT COUNT(*) FROM rem_tests'; // Таблица существует только на удалённом сервере
$stmt = $dbh->prepare($sql);
$status = $stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $exception) {
echo $exception->getMessage();
}
var_dump($result); // PDOException: SQLSTATE[HY000] [2002] Permission denied
die();


3. PHP + PDO + sockets:

// ... тот же самый код ...
'mysql:unix_socket=/var/lib/mysql/mysql.sock;dbname=cooldb',
// ... тот же самый код ...
var_dump($result); // PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'coldb.rem_tests' doesn't exist
die();


Вопросы:
1. В чём разница между PHP и Bash в плане коннекта к мускулу? (о.0)
2. Есть идеи получить доступ из пыха?

Спасибо!

@темы: База данных, remote, PHP, PDO, MySQL, *nix