localhost non corrisponde a % in MySQL. Sembra che dovrebbe, ma in realtà non è così. Dovresti concedere separatamente i privilegi a example@sqldat.com , sia per il USAGE privilegio e per i privilegi su ciascun database.
Oppure puoi connetterti come example@sqldat.com che fa corrisponde a % . L'utilizzo dell'indirizzo IP per localhost sembra che dovrebbe funzionare in modo identico a localhost, ma non è così. Devi avere due righe in mysql.user tabella (e anche nella mysql.db tabella nel tuo caso) per abilitarli entrambi.
Per dimostrare la differenza tra localhost e 127.0.0.1:
Connessione come mysql -h localhost utilizza l'interfaccia socket UNIX e ignora TCP/IP. Questo può essere leggermente migliore per le prestazioni, ma ha l'effetto sull'abbinamento delle sovvenzioni descritto sopra.
Puoi forzare una connessione TCP/IP locale connettendoti come mysql -h 127.0.0.1 . Quindi raccoglierà le sovvenzioni che hai concesso a example@sqldat.com% .
Quindi, per ottenere lo stesso utente, password e privilegi sia per l'interfaccia socket che per l'interfaccia TCP/IP, dovresti eseguire all delle seguenti affermazioni:
GRANT USAGE ON *.* TO 'myuser'@'%' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT USAGE ON *.* TO 'myuser'@'localhost' IDENTIFIED BY PASSWORD '*7733323232...'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db1`.* TO 'myuser'@'localhost'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'%'
GRANT ALL PRIVILEGES ON `db2`.* TO 'myuser'@'localhost'