localhost
не съвпада с %
в MySQL. Изглежда така трябва, но всъщност не е така. Ще трябва отделно да предоставите привилегии на [email protected]
, и двете за USAGE
привилегия и за привилегиите във всяка база данни.
Или можете да се свържете като [email protected]
което прави съвпада с %
. Използването на IP адреса за localhost изглежда, че трябва да работи идентично с localhost, но не е така. Трябва да имате два реда в mysql.user
таблица (а също и в mysql.db
таблица във вашия случай), за да активирате и двете.
За да демонстрирате разликата между localhost и 127.0.0.1:
Свързване като mysql -h localhost
използва интерфейса на UNIX сокет и заобикаля TCP/IP. Това може да е малко по-добро за производителността, но има ефект върху съответствието на безвъзмездните средства, описано по-горе.
Можете да наложите локална TCP/IP връзка, като се свържете като mysql -h 127.0.0.1
. След това ще вземе предоставените от вас разрешения на [email protected]%
.
Така че, за да получите един и същ потребител, парола и привилегии както за интерфейса на сокета, така и за TCP/IP интерфейса, ще трябва да стартирате all от следните твърдения:
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'