Пользователи пользователей '@'% 'и' User '@' localhost 'не совпадают?
Я создал пользователя для первой команды, но не смог выполнить вход в систему через localhost (linux). Эта ссылка mysqldoc указывает, что мне нужно создать второго пользователя с тем же именем, но используя синтаксис во втором блоке команд.
mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON my_upload.* TO 'myuser'@'%' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)
Итак, я попробовал это, как показано ниже, и это действительно сработало. Но являются ли эти два отдельных пользователя? Если я изменю pw для одного, будет ли другая синхронизирована, или они действительно являются отдельными пользователями?
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY '4myuser';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON my_upload.* TO 'myuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
Ответы
Ответ 1
[email protected]%
разрешает доступ из всех мест. [email protected]
будет разрешать доступ только с localhost. Это два разных пользователя с двумя разными паролями (хотя вы можете установить их на один и тот же пароль, но если вы обновите один пароль, другой не будет автоматически обновляться)
Ответ 2
В принципе, да, это два разных пользователя с (возможно) разными разрешениями и (возможно) разными паролями.
- myuser @%: Пользователь myuser, подключающийся с любого хоста.
- myuser @localhost: Пользователь myuser, подключающийся только к localhost.
Хорошее чтение - это руководство MySQL о доступе к подключению, оно демонстрирует, как оно работает.
Ответ 3
Даже если они будут означать одно и то же, или если кто-то будет включать другой, они действительно разделяют пользователей!
13.7.1.3. Синтаксис GRANT
MySQL и стандартные версии SQL GRANT
Самые большие различия между версиями MySQL и стандартного SQL GRANT:
- MySQL связывает привилегии с комбинацией имени хоста и имя пользователя, а не только имя пользователя.
Ответ 4
Я столкнулся с той же ситуацией, что и описано. Добавление записи для [email protected]%
не работало.
Тем не менее добавление записи для того же [email protected]
снова начнет работать.
Это казалось неинтуитивным, учитывая наше понимание шаблона %
!
Проблема, упомянутая выше Кентом, заключалась в следующем:
У нас была строка ввода в таблице users для host:localhost
, но user
была пустой. По-видимому, это было разрешено для правила для %@localhost
, которое использовалось как совпадение перед моим правилом [email protected]%
.
Краткий ответ - проверьте наличие пустых или подстановочных имен в таблице user
.
... Я понятия не имею, как этот пробел попал туда или если он был намеренным.