我正在尝试在 perl 脚本中构建一些函数来创建、删除和授予对 mysql 数据库的权限。
目前,我尝试授予用户对指定数据库的权限,如下所示:
use DBI;
my $dbname=$_[1];
my $dbh = DBI->connect("dbi:mysql:", $sqluser,$sqlpass) or die "Unable to connect: $DBI::errstr\n";
.....
my $username=@unp[0];
my $dbname=@unp[1];
my $db_com="GRANT ALL ON ".$dbname.".* TO '".$username."'\@'localhost'";
my $sth = $dbh->prepare($db_com);
$sth->execute
or die "SQL Error: $DBI::errstr\n";
print "Permissions granted\n";
如果用户存在,则此方法有效。
在为 CREATE USER 和 DROP USER 尝试类似代码时,它可以有效地工作,根据请求创建或删除它们,或者如果用户不存在则抛出 mysql 语法错误。但是在授予权限时,即使数据库不存在,命令也会执行,这让我感到沮丧。
实际上在 mysql 提示符下,如果执行了 sql 查询,它会返回:
Query OK, 0 rows affected (0.00 sec)
我需要一种方法来发现数据库是否不存在,并提示用户提供正确的数据库名称。