[Rt-devel] RT 3.4.2 + MySQL and a database name like "rtdb-service"

laurent.gautrot at equipement.gouv.fr laurent.gautrot at equipement.gouv.fr
Fri Jul 15 02:36:28 EDT 2005


Hello,

While installing RT 3.4.2 + MySQL, I specified a database with a custom
databasename, something like 'rtdb-servicename'. The problem was caused by
 the hyphen in the database name.

I had troubles for rt-setup-database, the script just died. Here is a patch I
applied to get the database created with the ACL.

The point is the protection of the MySQL database name and the protection of
the MySQL database username with "`".

diff -ru rt-3.4.2/etc/acl.mysql rt-3.4.2-lg/etc/acl.mysql
--- rt-3.4.2/etc/acl.mysql	2004-06-26 22:31:56.000000000 +0200
+++ rt-3.4.2-lg/etc/acl.mysql	2005-06-17 17:39:09.000000000 +0200
@@ -4,6 +4,6 @@
 "USE mysql;",
 "DELETE FROM user WHERE user = '${RT::DatabaseUser}';",
 "DELETE FROM db where db = '${RT::DatabaseName}';",
-"GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON ${RT::DatabaseName}.* TO
${RT::DatabaseUser}\@'${RT::DatabaseRTHost}' IDENTIFIED BY
'${RT::DatabasePassword}';");
+"GRANT SELECT,INSERT,CREATE,INDEX,UPDATE,DELETE ON `${RT::DatabaseName}`.*
 TO ${RT::DatabaseUser}\@'${RT::DatabaseRTHost}' IDENTIFIED BY
'${RT::DatabasePassword}';");
 }
 1;
diff -ru rt-3.4.2/sbin/rt-setup-database.in
rt-3.4.2-lg/sbin/rt-setup-database.in
--- rt-3.4.2/sbin/rt-setup-database.in  2005-02-01 15:20:40.000000000 +0100
+++ rt-3.4.2-lg/sbin/rt-setup-database.in       2005-07-07 22:10:12.000000000
+0200
@@ -246,6 +246,10 @@
        unlink $RT::DatabaseName or warn $!;
        return;
     }
+    if ( $RT::DatabaseType eq 'mysql' ) {
+       $dbh->do("Drop DATABASE `$RT::DatabaseName`") or warn $DBI::errstr;
+       return;
+    }
     $dbh->do("Drop DATABASE $RT::DatabaseName") or warn $DBI::errstr;
 }

@@ -270,6 +274,9 @@
        $ENV{DB_LOCALE} = 'en_us.utf8';
         $dbh->do("CREATE DATABASE $RT::DatabaseName WITH BUFFERED LOG");
     }
+    elsif ( $RT::DatabaseType eq 'mysql' ) {
+        $dbh->do("CREATE DATABASE `$RT::DatabaseName`");
+    }
     else {
         $dbh->do("CREATE DATABASE $RT::DatabaseName") or die $DBI::errstr;
     }


More information about the Rt-devel mailing list