cgi ist ein interface und stellt damit eine schnittstelle dar, über die server-scripts oder -programme (auch c, etc.) "in diesem augenblick zusammengebaute html-seiten" über den webserver an einen anfordernden browser schicken können (im gegensatz zu fest abgespeicherten html-seiten, die immer gleich aussehen), ist aber selber keine script-sprache, kann also selber keine html-seiten bauen.
php wird nicht speziell mit mysql betrieben, aber sehr oft, da es viele funktionen speziell für diese datenbank zur verfügung stellt. kann aber auch mit anderen datenbanken zusammenarbeiten oder für zig andere zwecke eingesetzt werden, die nichts mit DBs zu tun haben.