Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przyznawanie praw do dodatkowej bazy danych MySQL powodującej problemy

MySQL identyfikuje użytkownika za pomocą ZARÓWNO nazwy użytkownika, jak i hosta. Kiedy MySQL przeprowadza uwierzytelnianie podczas logowania, MySQL najpierw szuka nazwy hosta, która jest dokładnie dopasowana. Jeśli nie znajdzie dokładnego dopasowania, szuka hosta zawierającego symbol wieloznaczny „%”.

Kiedy wykonałeś GRANT ... TO [email protected] , MySQL utworzył nowego użytkownika (bez hasła, ponieważ nie było IDENTIFIED BY podane w oświadczeniu.

Co się stało, gdy próbowałeś zalogować się jako myuser z lokalnego hosta mysqld próbował znaleźć wpis pasujący do 'myuser'@'localhost' w tabeli mysql.user i znalazł go. Sesja otrzymała uprawnienia przypisane do tego użytkownika.

(Aby być bardziej precyzyjnym, mysqld tak naprawdę nie patrzy na zawartość tabeli mysql.user, na strukturę in-memory, która została zapełniona z tabeli podczas jej budowania. struktura pamięci jest wyzwalana przez polecenie GRANT, REVOKE lub FLUSH PRIVILEGES).

Co się działo PRZED dodaniem nowego użytkownika, mysqld szukał dokładnego dopasowania użytkownika i nazwy hosta i nie znalazł żadnego. Ale znalazł wpis z symbolem wieloznacznym „%”, więc pasował do tego, więc sesja uzyskała wszystkie uprawnienia przyznane użytkownikowi „myuser”@„%”.

Dwóch użytkowników 'u'@'%' i 'u'@'localhost' są oddzielone i różne od siebie. Uprawnienia należy przyznać każdemu użytkownikowi indywidualnie. Wszelkie uprawnienia przyznane 'u'@'%' stosuje się TYLKO do tego użytkownika, a NIE do 'u'@'localhost' .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy ktoś odkrył, że REGEX \b nie działa w MYSQL?

  2. Odmowa dostępu z poprawnymi danymi uwierzytelniającymi, co się dzieje?

  3. Czy mysql auto increment jest bezpieczny w użyciu jako identyfikator użytkownika?

  4. Wydajność liczenia wierszy MySQL

  5. Czy mogę przeprowadzić transakcję w dwóch bazach MySQL?