sql >> Database >  >> RDS >> Mysql

Gebruiker heeft geen toegang tot een database

localhost komt niet overeen met % in MySQL. Het lijkt alsof het zou moeten, maar in feite is het niet zo. U moet afzonderlijk rechten toekennen aan [email protected] , beide voor de USAGE privilege, en voor de privileges op elke database.

Of u kunt verbinding maken als [email protected] wat doet komt overeen met % . Het gebruik van het IP-adres voor localhost lijkt op dezelfde manier te werken als localhost, maar dat is niet het geval. U moet twee regels hebben in de mysql.user tabel (en ook in de mysql.db tabel in uw geval) om beide in te schakelen.

Om het verschil tussen localhost en 127.0.0.1 te demonstreren:

Verbinding maken als mysql -h localhost gebruikt de UNIX-socketinterface en omzeilt TCP/IP. Dit kan iets beter zijn voor de prestaties, maar het heeft het hierboven beschreven effect op het matchen van subsidies.

U kunt een lokale TCP/IP-verbinding forceren door verbinding te maken als mysql -h 127.0.0.1 . Vervolgens haalt het de toelagen op die u hebt verstrekt aan [email protected]% .

Dus om dezelfde gebruiker, hetzelfde wachtwoord en dezelfde rechten te krijgen voor zowel de socket-interface als de TCP/IP-interface, moet u alles uitvoeren van de volgende uitspraken:

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. Barman gebruiken voor PostgreSQL Disaster Recovery

  2. SQL*Plus hoe de tekstvariabele van de prompt te accepteren?

  3. ORA-00900:ongeldige SQL-instructie - bij het uitvoeren van een procedure in oracle 10g

  4. Kan SQLite-database niet openen vanuit SQLIte Helper Oncreate, wanneer OnCreate wordt geactiveerd door de database voor de eerste keer te openen