Mysql
 sql >> база данни >  >> RDS >> Mysql

Предоставяне на права за допълнителна MySQL база данни, причиняваща проблеми

MySQL идентифицира потребител както чрез потребителското име, така и чрез хоста. Когато MySQL извършва удостоверяване при влизане, MySQL първо търси име на хост, което е точно съвпадение. Ако не намери точно съвпадение, тогава търси хост, съдържащ '%' заместващ знак.

Когато извършихте GRANT ... TO [email protected] , MySQL създаде нов потребител (без парола, защото нямаше IDENTIFIED BY дадени в изявлението.

Тогава какво се случи, когато се опитахте да влезете като myuser от localhost, mysqld се опита да намери запис, който съответства на 'myuser'@'localhost' в таблицата mysql.user и го намери. И сесията получи привилегиите, присвоени на този потребител.

(За да бъда малко по-точен, mysqld всъщност не разглежда съдържанието на таблицата mysql.user, а това, което наистина гледа структурата в паметта, която е попълнена от таблицата, когато е създадена. Повторно изграждане на структурата на паметта се задейства от оператор GRANT, REVOKE или FLUSH PRIVILEGES.)

Какво се случваше ПРЕДИ да добавите този нов потребител, mysqld търсеше точно съвпадение на потребител и име на хост и не намери. Но намери запис със заместващия знак „%“, така че съвпадна с него, така че сесията получи всички привилегии, предоставени на потребителя „myuser'@'%".

Двамата потребители 'u'@'%' и 'u'@'localhost' са отделни и различни един от друг. Привилегиите трябва да се предоставят на всеки потребител поотделно. Всички привилегии, предоставени на 'u'@'%' се прилага САМО за този потребител, а НЕ за '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. MySQL полето DATETIME съкращава ISO8601

  2. Функция PDO и IS NOT NULL

  3. Защо се случи тази грешка при създаването на EVENT със съставен израз?

  4. Възможно ли е да се използва команда от типа LOAD DATA INFILE за АКТУАЛИЗИРАНЕ на редове в db?

  5. Как да INNER JOIN 3 таблици с помощта на CodeIgniter