база данных — Pdo Ssh Tunnel

сейчас я создаю ssh-туннель, чтобы я мог подключиться к своей удаленной базе данных, но по какой-то причине соединение все еще отказывается …
мой сценарий:

try {

$host = 'remote host';
$sshuser = 'ssh user';
$sshpass = 'ssh password';
$dbuser = 'db user';
$dbpass = 'db user';
$dbname = 'db name';

shell_exec("ssh -p$sshpass ssh -o StrictHostKeyChecking=no -f -L 3307:127.0.0.1:3306 $sshuser@$host");

$dbh = new PDO('mysql:host=127.0.0.1;port=3307;dbname=' .$dbname. '', $dbuser, $dbpass);

$sth = $dbh->prepare("SELECT * from table");

$sth->execute();

$result = $sth->fetchAll();

print_r ($result);

shell_exec("kill $(ssh-pid)");

$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

И в результате я получаю:

Error!: SQLSTATE[HY000] [1130] Host 'host' is not allowed to connect to this MySQL server

2

Решение

Это довольно четкое сообщение об ошибке. Пользователи MySQL получают разрешение на основе имени пользователя и IP-адреса. Скорее всего, разрешения базы данных для пользователя базы данных ограничены только localhost.

На сервере базы данных проверьте результаты этой команды:

SELECT User, Host FROM mysql.User;

Если вы не видите запись для своего пользователя а также IP-адрес, вам нужно создать пользователя с соответствующими разрешениями.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]