localhost neodpovídá % v MySQL. Zdá se, že by mělo, ale ve skutečnosti tomu tak není. Adresu example@sqldat.com , a to jak pro USAGE oprávnění a pro oprávnění ke každé databázi.
Nebo se můžete připojit jako example@sqldat.com což dělá odpovídat % . Zdá se, že použití IP adresy pro localhost by mělo fungovat identicky jako localhost, ale není tomu tak. V mysql.user musíte mít dva řádky tabulce (a také v mysql.db tabulka ve vašem případě), abyste povolili obojí.
Pro demonstraci rozdílu mezi localhost a 127.0.0.1:
Připojování jako mysql -h localhost používá rozhraní soketu UNIX a obchází TCP/IP. To může být o něco lepší z hlediska výkonu, ale má to vliv na shodu grantů popsanou výše.
Místní připojení TCP/IP můžete vynutit připojením jako mysql -h 127.0.0.1 . Poté vyzvedne granty, které jste udělili example@sqldat.com% .
Chcete-li tedy získat stejného uživatele, heslo a oprávnění pro rozhraní soketu i rozhraní TCP/IP, musíte spustit všechny z následujících prohlášení:
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'