Ok this one sounds pretty scary, but more than likely you just upgraded MySQL didn’t you? Did you run mysql_upgrade?
Ok lets back up a bit. I just upgraded to MySQL 5.5.x using yum and a third party repo but when I tried to create a new function I got “Cannot load from mysql.proc. The table is probably corrupted” which is not the kind of message you want to receive on a Friday afternoon especially when it’s talking about a mysql.* table. Fortunately I was able to remain calm (primarily thanks to automated nightly backups) and think things through (primarily thanks to the quad iced latte on my desk).
The yum upgrade (or any other package manager I’m assuming) is not going to convert your tables for any changes that may be needed. That would be potentially changing your data which, in most cases would be poor form for the packages. Given peoples’ fly-by-the-seat-of-your-pants approach to upgrades, and the fact that backups usually only happen after things start to go wrong, you really want to keep that roll back path as much as possible.
From the command line you want to run mysql_upgrade, which works very much like any of the MySQL command line utilities to check every database and table (assuming the user has access) for compatibility problems, and attempt to fix them.
$ mysql_upgrade -u someAdminUserLotsOPrivs -p
Looking for 'mysql' as: mysql
You can read more here http://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html