我需要使用Perl脚本更改一些mysql密码。更改数据库条目时,以下方法起作用,但是当我针对mysql用户更改对其进行修改时,它将它们重置为空白密码。最后,“刷新特权”也很好,但是我还没有找到实现该目标的方法。
#!/usr/bin/perl
use DBI;
use strict;
my $newpass = "newpass";
my $driver = "mysql";
my $database = "mysql";
my $dsn = "DBI:$driver:database=$database";
my $dbh = DBI->connect($dsn, 'root', 'mysql' ) or die $DBI::errstr;
my $sth = $dbh->prepare("update user set password='$newpass' where User='admin'");
$sth->execute() or die $DBI::errstr;
$sth->finish();
$dbh->{AutoCommit} = 0;
$dbh->commit or die $DBI::errstr;
您缺少几个步骤。使用PASSWORD()命令并使用'admin'而不是'root',并添加flush priv。我在这里为您重写了脚本:
#!/usr/bin/perl
use DBI;
use strict;
my $newpass = "newpass";
my $driver = "mysql";
my $database = "mysql";
my $dsn = "DBI:$driver:database=$database";
my $dbh = DBI->connect($dsn, 'root', 'mysql' ) or die $DBI::errstr;
$dbh->{AutoCommit} = 0;
my $sth = $dbh->prepare("update user set password=PASSWORD('$newpass') where User='root'");
$sth->execute() or die $DBI::errstr;
$dbh->do('FLUSH PRIVILEGES') or die $DBI::errstr;
$sth->finish();
$dbh->commit or die $DBI::errstr;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句