Pode ser feito em um único comando (em vez de 148 do PHP):
mysql --database=dbname -B -N -e "SHOW TABLES" \
| awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' \
| mysql --database=dbname &
Você tem que amar a linha de comando...(Talvez você precise empregar o
--user
e --password
opções para mysql
). EDIT:para evitar problemas de chave estrangeira, adicionado
SET foreign_key_checks = 0;
e SET foreign_key_checks = 1;