Distinguish more carefully between different kinds of MySQL connection errors
Ref T10195. Root issue: if the MySQL user doesn't have permission to access all the databases, we give them a fairly generic error instead of telling them exactly what's wrong.
Currently, we throw a generic exception on connection failure. Instead, throw a more granular one, and distinguish between bad credentials and no access.
Test Plan: See next revision.
Reviewed By: chad
Maniphest Tasks: T10195
Differential Revision: https://secure.phabricator.com/D15078