मैं एक रिमोट सर्वर को कनेक्ट करने का प्रयास कर रहा हूं जहां मैंने MySQL स्थापित किया है, लेकिन यह लोकलहोस्ट रिमोट सर्वर ले रहा है जहां mySQL स्थापित है: 131.116.220.228 रिमोट सर्वर जहां से डीबी को कनेक्ट करने की आवश्यकता है: 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;

त्रुटि: डेटाबेस से कनेक्ट नहीं हो सका: होस्ट 'ov046hanpgate01.ddc.teliasonera.net' को D:\Integrations\OWF\Scripts\test27july.pl लाइन 6 पर इस MySQL सर्वर से कनेक्ट करने की अनुमति नहीं है।

0
Shruti 25 जुलाई 2018, 13:52
आपको अपनी अनुमतियों की जांच करने की आवश्यकता है। जब दूरस्थ होस्ट की बात आती है तो MySQL के पास सख्त अनुमतियाँ होती हैं, इसलिए सुनिश्चित करें कि आपके पास एक उपयोगकर्ता है जो @ के बाद होस्टनाम से मेल खाता है। root@localhost != root@%
 – 
Goodbye StackExchange
25 जुलाई 2018, 13:53

2 जवाब

ऐसा लगता है कि आपको उपयोगकर्ता श्रुतिटेस्ट को उस आईपी से कनेक्ट करने की अनुमति देने की आवश्यकता है जहां आप स्क्रिप्ट चला रहे हैं, अर्थात। 131.116.220.220

यह किसी भी व्यवस्थापक द्वारा MySQL सर्वर पर किया जा सकता है:

GRANT ALL PRIVILEGES ON *.* TO 'ShrutiTest'@'131.116.220.220'
1
Pradeep 25 जुलाई 2018, 14:05
और आईपी से पहुंच?
 – 
Pradeep
25 जुलाई 2018, 14:58
Information_schema.user_privileges से चुनें * जहां अनुदेयी द्वारा "श्रुतिटेस्ट'%" समूह की तरह अनुदेयी इसे जांचने के लिए चलाते हैं
 – 
Pradeep
25 जुलाई 2018, 15:01
यह मुझे हाँ प्रतिक्रिया के साथ 1 पंक्ति लौटा रहा है
 – 
Shruti
25 जुलाई 2018, 15:49

वही हल किया। इस्तेमाल किया गया कोड है:

#!/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);
-1
Dave Cross 27 जुलाई 2018, 10:39
तो आपने इसे पूरी तरह से अलग डेटाबेस से कनेक्ट करके ठीक किया? क्या यह वाकई ठीक है? इस उत्तर के लिए किसी और के लिए उपयोगी होने के लिए, आपको वास्तव में यह समझाने की ज़रूरत है कि आपको समाधान कैसे मिला और वह समाधान क्या था। यहां कुछ कोड डंप करना वास्तव में सहायक नहीं है।
 – 
Dave Cross
27 जुलाई 2018, 10:43