Almost identical - in fact I'd have thought that it would run in mysql as is
"SELECT DISTINCT mycontacts.firstname, mycontacts.lastname, mycontacts.city, mycontacts.state, clients.ClientID, clients.Company, clients.MainPhone, clients.city, clients.state
FROM contactlookup INNER JOIN mycontacts ON(contactlookup.CID = mycontacts.CID)
INNER JOIN myclients ON(contactlookup.ClientID = myclients.ClientID)
WHERE ((mycontacts.firstname Like '*ma*') AND (mycontacts.lastname Like '*anderson*') AND (myclients.ClientID>0))
ORDER BY mycontacts.firstname, mycontacts.lastname, myclients.ClientID DESC";
I did notice that you have the name 'clients' rather than 'myclients' in the second join - so it was probably just that typo that was the problem.
Access does like to scatter brackets around and they are not necessary in either access or mysql.