sql >> Databáze >  >> RDS >> Mysql

Uživatel nemá přístup k databázi

localhost neodpovídá % v MySQL. Zdá se, že by mělo, ale ve skutečnosti tomu tak není. Adresu [email protected] , a to jak pro USAGE oprávnění a pro oprávnění ke každé databázi.

Nebo se můžete připojit jako [email protected] což dělá odpovídat % . Zdá se, že použití IP adresy pro localhost by mělo fungovat identicky jako localhost, ale není tomu tak. V mysql.user musíte mít dva řádky tabulce (a také v mysql.db tabulka ve vašem případě), abyste povolili obojí.

Pro demonstraci rozdílu mezi localhost a 127.0.0.1:

Připojování jako mysql -h localhost používá rozhraní soketu UNIX a obchází TCP/IP. To může být o něco lepší z hlediska výkonu, ale má to vliv na shodu grantů popsanou výše.

Místní připojení TCP/IP můžete vynutit připojením jako mysql -h 127.0.0.1 . Poté vyzvedne granty, které jste udělili [email protected]% .

Chcete-li tedy získat stejného uživatele, heslo a oprávnění pro rozhraní soketu i rozhraní TCP/IP, musíte spustit všechny z následujících prohlášení:

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. Je to bezpečná/silná vstupní sanitační funkce?

  2. Existuje dotaz Oracle SQL, který agreguje více řádků do jednoho řádku?

  3. Nová funkce Oracle 18c:Online úprava dělení

  4. MS-Access Recordset a Class Module