【问题标题】:access denied for user 'root'@'localhost' (using password yes) while connecting perl with mysql将 perl 与 mysql 连接时,用户 'root'@'localhost' 的访问被拒绝(使用密码是)
【发布时间】:2019-04-29 14:07:13
【问题描述】:

我编写了以下 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;

【问题讨论】:

  • 您在哪个操作系统上工作?
  • 您可以使用mysql 命令行程序使用这些连接详细信息连接到数据库吗?

标签: mysql perl


【解决方案1】:

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

缺少主机和端口?

编辑:
它说访问被拒绝... @localhost。是本地服务器吗?如果没有,您应该如上所示声明服务器详细信息。

编辑2:
根据您的评论,您应该检查您的密码,就像听起来一样简单。您可以使用mysql -u root -p newPasswordHere 来实现它。选择一个新的并重试。

编辑3:
由于您已经更改了密码,请尝试以下更改连接:

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

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

【讨论】:

  • 是的,它是本地服务器。我也尝试提供主机/门户详细信息,但错误仍然相同。 @C4ud3x
  • 那么你可能输入了错误的密码或者你过滤掉了来自本地主机的传入连接。
  • 现在通过编辑您在 Edit3 中提到的代码,代码可以正常工作。谢谢@C4ud3x
  • @swapnil90 如果它解决了您的问题,您应该接受答案。
【解决方案2】:

如果错误提示“访问被拒绝”,那么密码可能是错误的,并且在 xampp 服务器中,sql 的默认密码将为 ' ' 。因此只需尝试以下行

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2013-06-11
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2014-09-10
    相关资源
    最近更新 更多