php - Perl/MySQL 'Host is not allowed' 和 ' failed: Client does not support authentication protocol requested by server' 错误?

标签 php mysql perl localhost remote-access

我正在编写一个从远程 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/

相关文章:

php - Laravel cURL POST 抛出 TokenMismatchException

javascript - 从 php 获取 echo 到 javascript(单独的文件)

mysql - 在加入它们之前在多个表上使用相同的 where 子句

mysql - 防止 MySQL 中的特定更新

mysql - 实现MySQL搜索结果分页

php - Laravel 5.2 获取Linux系统环境变量

php - 什么是命名空间,它是如何在 PHP 中实现的?

mysql union 没有按预期工作

perl - Vim 插件无法识别现有的 Perl 支持

perl - 图片::Magick 安装错误 127