Я новичок в административной части СУБД и сегодня вечером настраивал новую базу данных (используя MySQL), когда заметил это. После предоставления пользователю привилегии в первый раз создается еще одно разрешение, которое выглядит как
GRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
В документации говорится, что USAGE
привилегия означает «отсутствие привилегий», поэтому я предполагаю, что гранты работают иерархически, и, возможно, у пользователя должны быть какие-то привилегии для всех баз данных, так что это служит уловкой?
Я также не понимаю, почему в этой строке есть IDENTIFIED BY
предложение, когда в созданном мной гранте его нет (в основном потому, что я не понимаю, какой цели IDENTIFIED BY
служит предложение).
Изменить: извините за то, что не заявили об этом изначально, гранты были
GRANT ALL PRIVILEGES ON database.* TO admin_user
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO user
mysql
database
privileges
grant
Джон М. Наглик
источник
источник
Ответы:
Как вы сказали, в MySQL
USAGE
это синоним «без привилегий». Из Справочного руководства MySQL :USAGE
это способ сообщить MySQL о существовании учетной записи без предоставления ей каких-либо реальных привилегий. Следовательно, у них просто есть разрешение на использование сервера MySQLUSAGE
. Это соответствует строке в`mysql`.`user`
таблице без установленных привилегий.Предложение
IDENTIFIED BY
указывает, что для этого пользователя установлен пароль. Как мы узнаем, что пользователь является тем, кем он себя называет? Они идентифицируют себя, отправив правильный пароль для своей учетной записи.Пароль пользователя - это один из тех атрибутов учетной записи глобального уровня, который не привязан к конкретной базе данных или таблице. Он тоже живет в
`mysql`.`user`
таблице. Если у пользователя нет других привилегийON *.*
, он предоставляется,USAGE ON *.*
и там отображается его хеш-пароль. Часто это побочный эффектCREATE USER
заявления. Когда пользователь создается таким образом, у него изначально нет привилегий, поэтому они просто предоставляютсяUSAGE
.источник
Я пытался найти смысл
GRANT USAGE on *.* TO
и нашел здесь. Я могу пояснить, чтоGRANT USAGE on *.* TO user IDENTIFIED BY PASSWORD password
это будет предоставлено, когда вы создадите пользователя с помощью следующей команды (CREATE
):Когда вы предоставляете привилегию с
GRANT
, новые привилегии будут добавлены поверх нее.источник
Кроме того, пароли mysql, когда это
IDENTIFIED BY
предложение не используется , могут быть пустыми значениями, если не пустыми, они могут быть зашифрованы. Но даUSAGE
используется для изменения учетной записи путем предоставления простых ограничителей ресурсов, таких какMAX_QUERIES_PER_HOUR
, опять же, это можно указать, также используя предложение WITH в сочетании сGRANT USAGE
(привилегии не добавлены) илиGRANT ALL
, вы также можете указатьGRANT USAGE
на глобальном уровне, уровне базы данных, уровень стола и т.д ....источник