First attempt at usable privilege granting (MySQL only currently)
[dbsrgits/DBIx-Class-Historic.git] / lib / DBIx / Class / Storage / DBI / mysql.pm
index 8ecdfca..01d3e9f 100644 (file)
@@ -16,6 +16,61 @@ sub sqlt_type {
   return 'MySQL';
 }
 
+
+my @table_privileges = (qw/
+    ALTER
+    CREATE
+    DELETE
+    FILE
+    INDEX
+    INSERT
+    SELECT
+    UPDATE
+    USAGE/,
+    'CREATE TEMPORARY TABLE',
+    'LOCK TABLES',
+    'CREATE VIEW');
+
+my @dba_privileges = (
+    'CREATE USER',
+    'DROP',
+    'EVENT',
+    'PROCESS',
+    'RELOAD',
+    'REPLICATION CLIENT',
+    'REPLICATION SLAVE',
+    'SHUTDOWN',
+    'SUPER',
+    'GRANT OPTION',
+    'ALL',
+    'ALL PRIVILEGES');
+
+my @stored_func_privileges = (
+    'ALTER ROUTINE',
+    'CREATE ROUTINE',
+    'EXECUTE',
+    'TRIGGER');
+
+sub known_privileges {
+    return { map { $_ => 1 } @table_privileges, @dba_privileges, @stored_func_privileges };
+}
+
+sub set_user_password {
+    my ($self, $user, $password) = @_;
+
+    return "SET PASSWORD FOR $user = PASSWORD('$password')";
+}
+
+sub current_schema {
+    my ($self) = @_;
+    return $self->dbh->selectrow_arrayref("SELECT DATABASE()")->[0];
+}
+
+sub post_grant {
+    my ($self) = @_;
+    $self->dbh->do('FLUSH PRIVILEGES');
+}
+
 1;
 
 =head1 NAME