NAME MySQL::GrantParser - parse SHOW GRANTS and return as hash reference SYNOPSIS use MySQL::GrantParser; # connect with existing dbh my $dbh = DBI->connect(...); my $grant_parser = MySQL::GrantParser->new( dbh => $dbh; ); # connect with user, password my $grant_parser = MySQL::GrantParser->new( user => 'root', password => 'toor', hostname => '127.0.0.1', ); # and parse! my $grants = $grant_parser->parse; # => HashRef DESCRIPTION MySQL::GrantParser is SHOW GRANTS parser for MySQL, inspired by Ruby's Gratan . This module returns privileges for all users as following hash reference. { 'USER@HOST' => { 'user' => USER, 'host' => HOST, 'objects' => { 'DB_NAME.TABLE_NAME' => { privs => [ PRIV_TYPE, PRIV_TYPE, ... ], with => 'GRANT OPTION', }, ... }, 'options' => { 'identified' => '...', 'required' => '...', }, }, { ... }, } For example, this GRANT statement GRANT SELECT, INSERT, UPDATE, DELETE ON orcl.* TO 'scott'@'%' IDENTIFIED BY 'tiger' WITH GRANT OPTION; is represented as following. { 'scott@%' => { user => 'scott', host => '%', objects => { '*.*' => { privs => [ 'USAGE' ], with => '', }, '`orcl`.*' => { privs => [ 'SELECT', 'INSERT', 'UPDATE', 'DELETE', ], with => 'GRANT OPTION', } }, options => { identified => "PASSWORD XXX", required => '', }, }, } METHODS Class Methods new(%args:Hash) :MySQL::GrantParser Creates and returns a new MySQL::GrantParser instance. Dies on errors. %args is following: dbh => DBI:db Database handle object. user => Str password => Str hostname => Str socket => Str Path of UNIX domain socket for connecting. Mandatory arguments are dbh or hostname or socket. Instance Methods parse() :HashRef Parse privileges and return as hash reference. AUTHOR HIROSE Masaaki REPOSITORY https://github.com/hirose31/MySQL-GrantParser git clone https://github.com/hirose31/MySQL-GrantParser.git patches and collaborators are welcome. SEE ALSO Gratan , http://dev.mysql.com/doc/refman/5.6/en/grant.html COPYRIGHT Copyright HIROSE Masaaki LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.