Ay - all true. For us, the userID is the primary key. It's 9 digits. Consisting of a 3 digit school code and 6 digits unique.
I have been using an auto_increment field to make sure the 6 digit portion is really unique. Hence the mediumint(6) is all we really need.
The 9 digit total is because we're fitting the userIDs into a legacy db as well. In the space normally filled by Soc. Numbers.
But 6 digits or 1,000,000 users can get used more easily if we're not recycling numbers from accounts that have been dropped.
BTW - these userIDs are internal to the databases only. No users ever actually see their ID number.
I guess I've just been using the auto_increment as a shortcut to creating the 6 digit portion of the IDs. Given the 6 digit limit on unique ID numbers is there a better way to do this? At this point I guess if I want to recycle numbers, I'll have to do it in PHP with a couple of mysql calls.