Fist a dump of all current databases
mysqldump \
--all-databases -u httpd -p \
--default-character-set=latin1 > alldb.tmp_sql
Stop mysql
/bin/sh /usr/local/mysql/support-files/mysql.server stop
and move the old datadir
sudo mv /usr/local/mysql/data /usr/local/mysql/data_4
sudo mkdir /usr/local/mysql/data
chown -R _mysql /usr/local/mysql/data
Then split the datadump into seperate files
split -p "-- Current Database" alldb.tmp_sql
To prepend special params mysql dump provided, prepend the first file (probably xaa) and edit SET NAMES latin1 to SET NAMES utf8
for file in `ls x*`
do
new=`head -1 $file | \
sed -e 's/-- Current Database: //' -e 's/\`//g' -e 's/ /_/g'`
cat xaa > $new.sql
cat "$file" >> $new.sql
done
Then restart without checking the user privileges (so we can alter the usertable)
/usr/local/mysql/bin/safe_mysqld --skip-grant-tables &
Then finally do the import and watch for errors to fix
for file in `ls *.sql`
do
echo "Importing $file"
cat "$file" | sed -e \
's/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/' | mysql
done
Restart the processes:
/bin/sh /usr/local/mysql/support-files/mysql.server restart