我正在编写一个从远程 UNIX 服务器执行的 Perl 脚本。该脚本应该连接到我的本地主机,并将一些数据发布到由 XAMPP 运行的 MySQL 服务器。 我使用以下代码来启动连接:
my $dbHost = "my-machine-name";
my $dbUsername = "root";
my $dbPassword = "";
my $databaseName = "myDB";
my $connection = DBI->connect("DBI:mysql:$databaseName;host=$dbHost",
$dbUsername, $dbPassword, { RaiseError => 1 } )
or die ( "Couldn't connect to database: " . DBI->errstr );
起初我得到:
Host ... is not allowed to connect to this MySQL server
然后我read我需要将被拒绝的主机添加到用户列表中。所以我打开 XAMPP Control,单击 XAMPP->ADMIN 打开 phpMyAdmin,然后导航到用户表,复制表示 host=127.0.0.1 的行,然后将 127.0.0.1 修改为我得到的被拒绝的 IP。然后我再次打开 XAMPP Control,停止 Apache 和 MySQL,然后启动它们。
现在,我得到:
DBI connect('myDB;host=my-machine-name','root',...) failed: Client does not support authentication protocol requested by server; consider upgrading MySQL client at ...
我尝试将主机名从字符串名称更改为 IPv4 地址,但仍然遇到相同的错误。还尝试将 :3306
添加到主机末尾,但得到了相同的错误。
知道如何从远程服务器访问本地 MySQL 吗?
最佳答案
这应该有效:
$server = 'your server';
$port = '3306';
$user = 'your_user';
$pass = 'your_pass';
$database = 'database';
$dbConn = DBI->connect("DBI:mysql:$database:$server:$port", "$user", "$pass")
or die "Couldn't connect to database: " . DBI->errstr;
关于php - Perl/MySQL 'Host is not allowed' 和 ' failed: Client does not support authentication protocol requested by server' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914288/