Наше решение - сохранить крошечный my.cnf только с определенным разделом [client].
Большинство коннекторов MySQL имеют директиву read_defaults_file, которая позволяет вам использовать файл напрямую.
Затем вы можете сохранить этот файл в безопасности, и сценарий завершится ошибкой на этой строке, если пользователь не авторизован для этой информации.
Если вы используете хотя бы php5, mysqli :: options делает именно то, что я описываю, когда указан MYSQLI_READ_DEFAULT_FILE. В более старых версиях php похоже, что встроенный parse_ini_file выполнит трюк при разборе.
Преимущество этого подхода в том, что он совместим с Perl, Python и C, поэтому при изменении информации в вашей базе данных вы просто обновляете один файл, и все ваши приложения остаются синхронизированными.