localhost matchar inte % i MySQL. Det verkar som det borde, men det gör det faktiskt inte. Du måste ge separata privilegier till example@sqldat.com , båda för USAGE privilegier och för privilegier på varje databas.
Eller så kan du ansluta som example@sqldat.com vilket gör matcha % . Att använda IP-adressen för localhost verkar som om det borde fungera identiskt med localhost, men det gör det inte. Du måste ha två rader i mysql.user tabellen (och även i mysql.db tabell i ditt fall) för att aktivera båda.
För att visa skillnaden mellan localhost och 127.0.0.1:
Ansluter som mysql -h localhost använder UNIX-socket-gränssnittet och kringgår TCP/IP. Detta kan vara något bättre för prestanda, men det har den effekt på bidragsmatchning som beskrivs ovan.
Du kan tvinga fram en lokal TCP/IP-anslutning genom att ansluta som mysql -h 127.0.0.1 . Sedan hämtar den anslagen du har gjort till example@sqldat.com% .
Så för att få samma användare, lösenord och privilegier för både socket-gränssnittet och TCP/IP-gränssnittet, måste du köra alla av följande påståenden:
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'