sql >> Database teknologi >  >> RDS >> Mysql

Brugeren kan ikke få adgang til en database

localhost matcher ikke % i MySQL. Det ser ud til, at det burde, men det gør det faktisk ikke. Du skal særskilt give privilegier til [email protected] , begge for USAGE privilegier og for privilegier på hver database.

Eller du kan oprette forbindelse som [email protected] hvilket gør match % . Brug af IP-adressen til localhost ser ud til at det burde fungere identisk med localhost, men det gør det ikke. Du skal have to linjer i mysql.user tabel (og også i mysql.db tabel i dit tilfælde) for at aktivere begge dele.

For at demonstrere forskellen mellem localhost og 127.0.0.1:

Opretter forbindelse som mysql -h localhost bruger UNIX-socket-grænsefladen og omgår TCP/IP. Dette kan være lidt bedre for ydeevnen, men det har den effekt på bevillingsmatching, som er beskrevet ovenfor.

Du kan tvinge en lokal TCP/IP-forbindelse ved at oprette forbindelse som mysql -h 127.0.0.1 . Derefter henter den de bevillinger, du har givet til [email protected]% .

Så for at få den samme bruger, adgangskode og privilegier til både socket-grænsefladen og TCP/IP-grænsefladen, skal du køre alle af følgende udsagn:

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'


  1. Lagring af ikke-gregorianske datoer i Mysqls datotype

  2. Sådan opbevarer du bedst brugeroplysninger og brugerlogin og adgangskode

  3. Vælg den seneste række med GROUP BY i MySQL

  4. Introduktion til Firebase