localhost matcher ikke % i MySQL. Det ser ud til, at det burde, men det gør det faktisk ikke. Du skal særskilt give privilegier til example@sqldat.com , begge for USAGE privilegier og for privilegier på hver database.
Eller du kan oprette forbindelse som example@sqldat.com hvilket gør match % . Brug af IP-adressen til localhost ser ud til at det burde fungere identisk med localhost, men det gør det ikke. Du skal have to linjer i mysql.user tabel (og også i mysql.db tabel i dit tilfælde) for at aktivere begge dele.
For at demonstrere forskellen mellem localhost og 127.0.0.1:
Opretter forbindelse som mysql -h localhost bruger UNIX-socket-grænsefladen og omgår TCP/IP. Dette kan være lidt bedre for ydeevnen, men det har den effekt på bevillingsmatching, som er beskrevet ovenfor.
Du kan tvinge en lokal TCP/IP-forbindelse ved at oprette forbindelse som mysql -h 127.0.0.1 . Derefter henter den de bevillinger, du har givet til example@sqldat.com% .
Så for at få den samme bruger, adgangskode og privilegier til både socket-grænsefladen og TCP/IP-grænsefladen, skal du køre alle af følgende udsagn:
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'