localhost
matchar inte %
i MySQL. Det verkar som det borde, men det gör det faktiskt inte. Du måste ge separata privilegier till [email protected]
, båda för USAGE
privilegier och för privilegier på varje databas.
Eller så kan du ansluta som [email protected]
vilket gör matcha %
. Att använda IP-adressen för localhost verkar som om det borde fungera identiskt med localhost, men det gör det inte. Du måste ha två rader i mysql.user
tabellen (och även i mysql.db
tabell i ditt fall) för att aktivera båda.
För att visa skillnaden mellan localhost och 127.0.0.1:
Ansluter som mysql -h localhost
använder UNIX-socket-gränssnittet och kringgår TCP/IP. Detta kan vara något bättre för prestanda, men det har den effekt på bidragsmatchning som beskrivs ovan.
Du kan tvinga fram en lokal TCP/IP-anslutning genom att ansluta som mysql -h 127.0.0.1
. Sedan hämtar den anslagen du har gjort till [email protected]%
.
Så för att få samma användare, lösenord och privilegier för både socket-gränssnittet och TCP/IP-gränssnittet, måste du köra alla av följande påståenden:
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'