Удаленное соединение БД с другого удаленного IP Perl

0

Я пытаюсь подключить один удаленный сервер, где я установил MySQL, но он принимает локальный удаленный сервер localhost, на котором установлен mySQL: 131.116.220.228 Удаленный сервер, с которого необходимо подключить db: 131.116.220.220 ('ov046hanpgate01.ddc.teliasonera.net ")

use DBI;
print "Testing 1\n";

$DSN="DATABASE=MySQL80;port=3306;host=131.116.220.228";
print "Testing 2\n";
my $dbh = DBI->connect("dbi:mysql:$DSN", "ShrutiTest", "Shruti@92", {PrintError => 0})
or die "Couldn't connect to database: " . DBI->errstr;
print "Testing 3\n";

$dbh->disconnect;

Ошибка: Не удалось подключиться к базе данных: Host 'ov046hanpgate01.ddc.teliasonera.net' не разрешено подключаться к этому серверу MySQL в D:\Integrations\OWF\Scripts\test27july.pl строке 6.

  • 0
    Вы должны проверить свои разрешения. MySQL имеет строгие разрешения для удаленных хостов, поэтому убедитесь, что у вас есть пользователь, который соответствует имени хоста после @ . root@localhost ! = root@%
Теги:
remote-server

2 ответа

1

Похоже, вам нужно разрешить пользователю ShrutiTest подключаться из ip, где вы используете скрипт, а именно: 131.116.220.220

Это можно сделать на сервере MySQL любым администратором:

GRANT ALL PRIVILEGES ON *.* TO 'ShrutiTest'@'131.116.220.220'
  • 0
    уже сделал это. Пользователь ShrutiTest имеет все привилегии
  • 0
    А доступ с ip?
Показать ещё 2 комментария
0

Решила то же самое. Используемый код:

#!/usr/bin/perl -w

use DBI;

## mysql user database name
$db ="Buffering";
## mysql database user name
$user = "ShrutiBuffer";

## mysql database password
$pass = "Shruti1234";

## user hostname : This should be "localhost" but it can be diffrent too
$host="131.116.220.228";
$port="3306";
## SQL query
$query = "select * from buffering.insert_data";

my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host;port=$port",$user, $pass);

$sqlQuery  = $dbh->prepare($query)
or die "Can't prepare $query: $dbh->errstr\n";

$sqlQuery->execute
or die "can't execute the query: $sqlQuery->errstr";

print "values are:: ";
while (@row= $sqlQuery->fetchrow_array()) {
 print join(", ", @row), "\n";

}

$sqlQuery->finish;
exit(0);
  • 0
    Таким образом, вы исправили это, подключившись к совершенно другой базе данных? Это действительно исправление? Чтобы этот ответ был полезен для всех остальных, вам действительно нужно объяснить, как вы нашли решение и что это за решение. Простой сброс кода здесь не очень полезен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню