localhost
neodpovídá %
v MySQL. Zdá se, že by mělo, ale ve skutečnosti tomu tak není. Adresu [email protected]
, 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 [email protected]
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 [email protected]%
.
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'