steps for removing the definer clause in mysqlbackup.
When we take the mysql backup we have some unwanted users in the definer clause.
We want to remove the definer clause in mysql.
1. Take the backup.
mysqldump -u kiran -pkiran --all-databases --single-transaction > mysqldump.sql
vi dumper.pl
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long qw(:config no_ignore_case );
my $replace = undef;
my $delete = undef;
my $help = 0;
GetOptions (
'replace|r=s' => \$replace,
'delete|d' => \$delete,
'help|h' => \$help,
) or help('unrecognized options');
help() if $help;
if ($delete and $replace) {
help( 'you must choose EITHER "delete" OR "replace". Not both');
}
$delete = 1 unless $replace;
while (my $line = <STDIN>) {
if ($delete) {
$line =~ s{(/\*!\d+ )\s*definer\s*=\s*\S+}{$1}i;
}
elsif ($replace) {
$line =~ s{(/\*!\d+\s+definer\s*=\s*)(\S+)}{$1 $replace}i;
}
print $line;
}
sub help {
my ($msg) = @_;
if ($msg) {
print "*** $msg\n";
}
print "dump_filter - mysqldump filter \n",
"(C) Test Definer, 2009\n",
"removes/changes DEFINER clauses from MySQL dumps\n",
"USAGE: dump_filter [options]\n",
" -d|--delete removes the DEFINER clauses\n",
" -r|--replace=s replaces every DEFINER clause with the \n",
" new value provided\n",
" -h|--help This text\n";
exit(1);
}
3.) Remove the definer clause
cat mysqldump.sql | perl dumper.pl --delete > mysqldump-ver01.sql

No comments:
Post a Comment