ispman/lib database.MySQL.lib,1.5,1.6
Joerg Delker <[email protected]> Sat, 25 Jul 2009 19:33:09 +0000
| Newsgroups | gmane.comp.isp.ispman.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ispman/ispman/lib
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv1987
Modified Files:
database.MySQL.lib
Log Message:
fixed bug with "-" in DB name
modified tmp file handling
Index: database.MySQL.lib
===================================================================
RCS file: /cvsroot/ispman/ispman/lib/database.MySQL.lib,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- database.MySQL.lib 6 Feb 2009 10:13:17 -0000 1.5
+++ database.MySQL.lib 25 Jul 2009 19:33:07 -0000 1.6
@@ -1,15 +1,21 @@
+use File::Temp;
+
+# get MySQL Admin credentials
$dbadmin = $ispman->getConf("dbAdminName");
$dbpass = $ispman->getConf("dbAdminPass");
-$defaultsfile = "/tmp/ispman.mysql.cnf";
+# create tmp dir
+my $tmpdir = File::Temp::tempdir(CLEANUP => 1);
-%cmnds = (
+my $mysql_defaults = "$tmpdir/ispman.mysql.cnf";
+
+my %cmnds = (
mysql => "mysql",
mysqladmin => "mysqladmin",
mysqldump => "mysqldump" );
-sysopen( DEF, $defaultsfile, O_WRONLY | O_TRUNC | O_CREAT, 0600 )
- || die("unable to create $defaultsfile");
+sysopen( DEF, $mysql_defaults, O_WRONLY | O_TRUNC | O_CREAT, 0600 )
+ || die("unable to create $mysql_defaults");
print DEF qq|
[client]
host = localhost
@@ -19,6 +25,17 @@
|;
close DEF;
+sub build_exec {
+ my $sql = shift;
+
+ my ($fh, $filename) = File::Temp::tempfile(DIR => $tmpdir);
+
+ print $fh $sql;
+ close $fh;
+
+ return "$cmnds{'mysql'} --defaults-file=$mysql_defaults < $filename";
+}
+
# prepare MySQL user notation
sub sql_user {
my ( $user, $host ) = @_;
@@ -48,7 +65,7 @@
. " AND Host=\'" . $params->{'ispmanDBAccessFilter'} . "\';";
$sql .=
"GRANT " . join( ",", @privs )
- . " ON " . $params->{'ispmanDBName'} . ".*"
+ . " ON `" . $params->{'ispmanDBName'} . "`.*"
. " TO " . sql_user( $params->{'ispmanDBUser'}, $params->{'ispmanDBAccessFilter'} )
. " IDENTIFIED BY PASSWORD \'" . $params->{'ispmanDBPass'} . "\'"
. (( scalar(@priv_opts) > 0 ) ? " WITH " . join( ",", @priv_opts ) : "") . ";";
@@ -59,13 +76,12 @@
sub add_database {
my $params = shift;
- my $sql = "CREATE DATABASE " . $params->{'ispmanDBName'} . " IF NOT EXISTS;";
+ my $sql = "CREATE DATABASE `" . $params->{'ispmanDBName'} . "`;";
$sql .= sql_grant($params);
$sql .= "use " . $params->{'ispmanDBName'} . ";";
- $sql .= join ";", map { "\\. " . ((/^\//)?$_:($ispman->getConf{'installDir'}."/tasks/$_")) }
+ $sql .= join ";", map { "\\. " . (($_ =~ /^\//)?$_:($ispman->getConf('installDir')."/tasks/$_")) }
split('\|',$params->{'actions'});
-
- return "echo \"$sql\" | $cmnds{'mysql'} --defaults-file=$defaultsfile";
+ return build_exec($sql);
}
@@ -113,7 +129,7 @@
$sql .= "FLUSH PRIVILEGES;";
}
- return "echo \"$sql\" | $cmnds{mysql} --defaults-file=$defaultsfile" if $sql;
+ return build_exec($sql);
}
@@ -122,12 +138,12 @@
my $params = shift;
my $sql =
- "DELETE FROM mysql.user "
- . "WHERE User=\'" . $params->{'ispmanDBUser'} . "\' "
- . "AND Host=\'" . $params->{'ispmanDBAccessFilter'} . "\';";
- $sql .= "DROP DATABASE " . $params->{'ispmanDBName'} . ";";
+ "DROP USER "
+ . sql_user( $params->{'ispmanDBUser'}, $params->{'ispmanDBAccessFilter'} )
+ . ";";
+ $sql .= "DROP DATABASE `" . $params->{'ispmanDBName'} . "`;";
- return "echo \"$sql\" | $cmnds{mysql} --defaults-file=$defaultsfile";
+ return build_exec($sql);
}
@@ -135,29 +151,24 @@
my $params = shift;
my @cmd;
- my $bakfile = tmpnam();
+ my $bakfile = mktemp("$tmpdir/sqlbakXXXXXX");
my $olddb = $params->{'old_ispmanDBName'};
my $newdb = $params->{'new_ispmanDBName'};
- push @cmd, "$cmnds{mysqldump} --defaults-file=$defaultsfile -r $bakfile $olddb";
- push @cmd, "$cmnds{mysqladmin} --defaults-file=$defaultsfile create $newdb";
- push @cmd, "$cmnds{mysql} --defaults-file=$defaultsfile $newdb < $bakfile";
+ push @cmd, "$cmnds{mysqldump} --defaults-file=$mysql_defaults -r $bakfile $olddb";
+ push @cmd, "$cmnds{mysqladmin} --defaults-file=$mysql_defaults create $newdb";
+ push @cmd, "$cmnds{mysql} --defaults-file=$mysql_defaults $newdb < $bakfile";
# to be uncommented by the brave...
- #push @cmd, "$cmnds{mysqladmin} --defaults-file=$defaultsfile -f drop $olddb";
- unlink($bakfile);
+ push @cmd, "$cmnds{mysqladmin} --defaults-file=$mysql_defaults -f drop $olddb";
# migrate privilege
- push @cmd, "echo \"update mysql.db set Db=\'$newdb\' where Db=\'$olddb\' \" | "
- . "$cmnds{mysql} --defaults-file=$defaultsfile";
+ my $sql = "update mysql.db set Db=\'$newdb\' where Db=\'$olddb\';";
+ push @cmd, build_exec($sql);
return @cmd;
}
-END {
- unlink($defaultsfile);
-}
-
1;
------------------------------------------------------------------------------