The usual method for simple sites is to store a hash of a user's password right in their user record.
What if the password field is removed from the user table, and a password table is created? The password table would have the same password hash, but instead of the user id, the key to the table is another hash - a hash of the userid and some secret key.
The idea being that if you get a copy of the user table, you don't get the password hashes. If you get the user and the password table, you cannot connect a password to any particular user account.
I suppose if you could crack the password hash, you'd have a handful of passwords you know are in use on the system. You could try each password on each account until it works. So perhaps I answered my own question. Nevertheless is there something I'm missing? This feels like a good idea, but I couldn't find any thing about it.
I suppose that it might be easy to detect an attack that is using a list of passwords that do exist for users in the system and block or otherwise shutdown the attack.