Perl DBI DBD :: mysql从mysql服务器获取数据库名称

时间:2010-12-06 13:34:39

标签: mysql perl dbi

我有一个生产服务器,每天在MySql中创建不同的数据库 服务器

我需要写一个会在一天结束时运行的perl script 并执行以下操作。

连接到mysql服务器并获取数据库的所有名称列表 它有。然后连接到每个并检查存储的数据。

我唯一无法用DBI and DBD::mysql做的事情 从mysql服务器读取数据库名称。

我无法找到任何可以在没有连接的情况下工作的DBI功能 数据库第一。

任何帮助/示例/网址都会非常有用: - )

2 个答案:

答案 0 :(得分:4)

尝试使用INFORMATION_SCHEMA数据库 - 该数据库名称始终存在,因此可以硬编码到DBI中。

要成为more specific,相当于SHOW DATABASES的是:

SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA

答案 1 :(得分:4)

use DBI;
use strict;
use warnings;
my $dbh = DBI->connect('dbi:mysql:information_schema', $ENV{'USER'}, $ENV{'PASSWD'}, { 'RaiseError' => 1 } );
my $databases = $dbh->selectcol_arrayref('show databases');

use Data::Dumper;
print Dumper $databases;
__END__
$VAR1 = [
      'information_schema',
      'mysql',
      'your_database_1',
      'your_database_2'
    ];

只会显示授权给您所连接用户的数据库。