File: acl.mysql

package info (click to toggle)
request-tracker5 5.0.7%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 80,264 kB
  • sloc: javascript: 191,898; perl: 87,146; sh: 1,426; makefile: 487; python: 37; php: 15
file content (38 lines) | stat: -rw-r--r-- 1,262 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

sub acl {
    my $dbh = shift;
    my $db_name = RT->Config->Get('DatabaseName');
    my $db_rthost = RT->Config->Get('DatabaseRTHost');
    my $db_user = RT->Config->Get('DatabaseUser');
    my $db_pass = RT->Config->Get('DatabasePassword');
    unless ( $db_user ) {
        RT->Logger->warn("DatabaseUser option is not defined or empty. Skipping...");
        return;
    }
    if ( $db_user eq 'root' ) {
        RT->Logger->warn("DatabaseUser is root. Skipping...");
        return;
    }
    $db_name =~ s/([_%\\])/\\$1/g;

    if ( my $version = ( $dbh->selectrow_array("show variables like 'version'") )[1] ) {
        if ( $version !~ /mariadb/i && $version =~ /^(\d+)\./ ) {
            # run 2 part acl update for mysql 8 or higher
            if ( $1 >= 8 ) {
                return (
                    "CREATE USER IF NOT EXISTS '$db_user'\@'$db_rthost' IDENTIFIED BY '$db_pass';",
                    "GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON `$db_name`.* TO '$db_user'\@'$db_rthost';",
                );
            }
        }
    }

    return (
        "GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE
               ON `$db_name`.*
               TO '$db_user'\@'$db_rthost'
               IDENTIFIED BY '$db_pass';",
    );
}

1;