我编写了一个以下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.
我也经历了类似的问题,但根据这些问题我已经username
和password
了。我甚至也改变了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;
答案 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;