sql >> Databasteknik >  >> RDS >> Mysql

Användaren kan inte komma åt en databas

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'


  1. JSON_DEPTH() – Hitta det maximala djupet för ett JSON-dokument i MySQL

  2. Installera RAC för en databas med datafiler

  3. SQL GROUP BY- 3 enkla tips för att gruppera resultat som ett proffs

  4. mysql Räkna flera förekomster av multiplexerade poster