If you have many machines that have the same set of users on them, it doesn't make sense to have user identity information on each of them. How can you unify this information? There are two ways I know of (I am sure there are more): LDAP and libnss-mysql.
In this tutorial I will talk about libnss-mysql.
Using libnss-mysql to authenticate linux shell users is easy! Just install libnss-mysql, then add mysql to /etc/nsswitch.conf. You will need to edit the nss-mysql.conf and nss-mysql-root.conf files to match your database. We use a custom database schema, but you can use the one that comes with the package.
I finally got apache2 and pam to connect to mysql. Took long enough! Ugh. I did learn a bunch though: namely pam is a good thing!
I ran into this error and had a difficult time squashing it:
couldn't check access. No groups file? - ARGH. Probably a module missing.