0

Perl DBD-mysql モジュールを使用してリモート MySQL サーバーに接続しようとしています。クライアントは Windows の下にあるため、Perl に接続する前に、Windos コマンドラインでいくつかのテストを行いました。

mysql -h xx.xx.xx.xx -u root -p database -P 3306

そして戻ってきERROR 1045 (28000): Access denied for user 'root'@'my-pc-name'た。インターネットでいくつかの調査を行ったところgrant all privileges on *.* to root@"%" identified by "password"、サーバー側で実行するとこの問題が解決する可能性があることがわかりました。すると、サーバーへの接続に成功しました。

ただし、Perl DBD-mysql モジュールを使用して接続する場合は、このようなアクセスの問題がまだあります。これが私のコードです:

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $dbh = DBI->connect('DBI:mysql:database@xx.xx.xx.xx', 'root', 'password'
                   ) || die "Could not connect to database: $DBI::errstr";

それは報告しました:

DBI connect('database@xx.xx.xx.xx','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES)

ヒントを教えてください。

4

1 に答える 1

0

DBI CPAN doc page$data_sourceで、 forの2つの代替案を見つけましたDBI->connect。私の最初の試みとは対照的に、より詳細な試みはMySQLサーバーへの接続に成功することができました. と言いました:

Examples of $data_source values are:

  dbi:DriverName:database_name
  dbi:DriverName:database_name@hostname:port
  dbi:DriverName:database=database_name;host=hostname;port=port

2番目のものはうまくいかないようですが、3番目のもの、つまり

my $dbh = DBI->connect('dbi:mysql:dbname=database;host=xx.xx.xx.xx','root', 'password'
                   ) || die "Could not connect to database: $DBI::errstr";

それは魅力のように働きました。

于 2013-03-12T10:01:49.847 に答える