Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Benutzer kann nicht auf eine Datenbank zugreifen

localhost stimmt nicht mit % überein bei MySQL. Es scheint, als ob es sollte, aber tatsächlich tut es das nicht. Sie müssen [email protected] , beide für USAGE Privileg und für die Privilegien auf jeder Datenbank.

Oder Sie können eine Verbindung als [email protected] was macht Übereinstimmung mit % . Die Verwendung der IP-Adresse für localhost scheint identisch mit localhost zu funktionieren, tut es aber nicht. Sie müssen zwei Zeilen in mysql.user haben Tabelle (und auch in der mysql.db Tabelle in Ihrem Fall), um beide zu aktivieren.

Um den Unterschied zwischen localhost und 127.0.0.1 zu demonstrieren:

Verbinden als mysql -h localhost verwendet die UNIX-Socket-Schnittstelle und umgeht TCP/IP. Dies kann für die Leistung etwas besser sein, hat aber die oben beschriebene Auswirkung auf die Zuordnung von Zuschüssen.

Sie können eine lokale TCP/IP-Verbindung erzwingen, indem Sie eine Verbindung als mysql -h 127.0.0.1 herstellen . Dann werden die von Ihnen an [email protected]% .

Um denselben Benutzer, dasselbe Passwort und dieselben Berechtigungen sowohl für die Socket-Schnittstelle als auch für die TCP/IP-Schnittstelle zu erhalten, müssten Sie also all ausführen der folgenden Aussagen:

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'