localhost não corresponde a % em MySQL. Parece que deveria, mas na verdade não é. Você teria que conceder privilégios separadamente para example@sqldat.com , ambos para o USAGE privilégio e para os privilégios em cada banco de dados. Ou você pode se conectar como
example@sqldat.com o que faz corresponder % . Usar o endereço IP para localhost parece funcionar de forma idêntica ao localhost, mas não funciona. Você precisa ter duas linhas no mysql.user tabela (e também no mysql.db table no seu caso) para habilitar ambos. Para demonstrar a diferença entre localhost e 127.0.0.1:
Conectando como
mysql -h localhost usa a interface de soquete UNIX e ignora o TCP/IP. Isso pode ser um pouco melhor para o desempenho, mas afeta a correspondência de concessão descrita acima. Você pode forçar uma conexão TCP/IP local conectando como
mysql -h 127.0.0.1 . Em seguida, ele coletará as doações que você fez para example@sqldat.com% . Portanto, para obter o mesmo usuário, senha e privilégios para a interface de soquete e a interface TCP/IP, você precisa executar all das seguintes afirmações:
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'