MySQL::GrantParser - parse SHOW GRANTS and return as hash reference
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
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 => '',
},
},
}
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
.
Parse privileges and return as hash reference.
HIROSE Masaaki hirose31@gmail.com
https://github.com/hirose31/MySQL-GrantParser
git clone https://github.com/hirose31/MySQL-GrantParser.git
patches and collaborators are welcome.
Gratan, http://dev.mysql.com/doc/refman/5.6/en/grant.html
Copyright HIROSE Masaaki
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.