用户访问被拒绝' root' localhost' (使用密码是)将perl与mysql连接

时间:2015-06-25 11:52:35

标签: mysql perl

我编写了一个以下perl脚本来连接mysql工作台数据库,但是它给出了错误access denied for user 'root'@'localhost' (using password yes)

运行代码后出错:

C:\Users\1053130\Desktop>perl mysql.pl
DBI connect('database=dvd_collection','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at mysql.pl line 9.
Access denied for user 'root'@'localhost' (using password: YES) at mysql.pl line 9.

我也经历了类似的问题,但根据这些问题我已经usernamepassword了。我甚至也改变了root密码。但错误仍然是一样的。

代码:

#!/usr/bin/perl
use DBI;
use strict;
my $driver = "mysql"; 
my $database = "dvd_collection";
my $dsn = "DBI:$driver:database=$database";
my $userid = "root";
my $password = "123";
my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;

2 个答案:

答案 0 :(得分:1)

my $dsn = "DBI:$driver:database=$database";不应该是 my $dsn = "DBI:$driver:database=$database;host=$hostname;port=$port";

缺少主机和端口?

修改
它说Access拒绝了...... @localhost。它是本地服务器吗?如果没有,您应该声明服务器详细信息,如上所示。

<强> EDIT2:
根据你的评论,你应该检查你的密码,就像它听起来一样简单。您可以使用mysql -u root -p newPasswordHere进行操作。选择一个新的并重试。

<强> EDIT3:
由于您已经更改了密码,请尝试以下更改连接:

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

我看到一些人对连接的不同格式有一些问题。

答案 1 :(得分:0)

如果错误显示“访问被拒绝”,则可能是密码错误,并且在xampp服务器中,sql的dafault密码将为''。因此,请尝试以下行

my $dbh=DBI->connect("DBI:mysql:perldb",'root','') or die;