select table_schema "Database",
sum( data_length + index_length ) / 1024 / 1024 "Size (MB)",
sum( data_free )/ 1024 / 1024 "Free (MB)"
from information_schema.tables
group by table_schema ;
This will work in mySQL 5.0.2 and newer. Use SHOW TABLE STATUS command for other versions.