MySQL SHOW GRANTS
показывает права текущего пользователя.
Есть ли способ войти в систему как root и показать разрешения всех пользователей?
mysql
permissions
Адам Матан
источник
источник
ERROR 1146 (42S02): Table 'common_schema.sql_show_grants' doesn't exist
information_schema.user_privileges
?РЕДАКТИРОВАТЬ:
Как упомянул Шломи Ноах:
источник
information_schema.user_privileges
только перечисляет привилегии уровня пользователя, такие какSUPER
,RELOAD
и т. д. Он также перечисляет всесторонние гранты DML какSELECT
. В нем не перечислены привилегии, относящиеся к базе данных, таблицам, столбцам и рутинам. Там Фор грантGRANT SELECT ON mydb.* TO myuser@localhost
вовсе не показывает наinformation_schema.user_privileges
.common_schema
Решение , представленное выше заполнители данныхuser_privileges
и других таблиц , чтобы дать вам полную картину.Этот фрагмент оболочки Linux зацикливается на всех пользователях MySQL и делает ПОКАЗЫВАЕТ для каждого:
Лучше всего работает, если вы можете подключиться к MySQL без пароля.
Вывод отформатирован, поэтому его можно запускать в оболочке MySQL. Внимание! Выходные данные также содержат права пользователя root и пароль для пользователя root! Удалите эти строки, если вы не хотите, чтобы пользователь MySQL был изменен.
источник
mysql --defaults-file=/auth/root-mysql.cnf --batch --skip-column-names --execute "SELECT User, Host from mysql.user" | while read user host; do echo "SHOW GRANTS FOR '${user}'@'${host}';"; done | mysql --defaults-file=/auth/root-mysql.cnf --batch | sed 's/^Grants for/-- Grants for/'
select * from mysql.user;
Может дать вам список пользователей и привилегии, назначенные для каждого из них, требует доступа к
mysql.user
таблице, хотя и уroot
пользователя есть.источник
mysql.db
. Привилегии на конкретные таблицы естьmysql.tables_priv
и тд. Так что не все так просто.select * from mysql.user
в crackstation.net и посмотрите не зашифрованный вывод.Один вкладыш (изменение
-uroot
к-u$USER_NAME
для использования с другими пользователями) в Баш Unix (из - за кавычку):или без обратных галочек и со встроенным паролем (пробел перед командой исключает его из истории Bash в Ubuntu):
В Windows:
источник
Если вы можете запустить следующие операторы SELECT без ошибок:
тогда не стесняйтесь использовать следующий код (ниже), написанный в синтаксисе .sql.
Я разработал этот запрос в попытке перестроить операторы GRANT для всех существующих разрешений (для частого обслуживания во время миграции базы данных). Есть несколько вопросов, которые нужно обсудить, например, связывание паролей пользователей, но поскольку мы часто обновляем пароли, это не входит в сферу этого проекта.
Рады ответить / проверить любые вопросы или проблемы
источник
Это даст вам лучший вид ...
источник
Команда
SHOW GRANTS [FOR user]
может показать любого пользователя, которого вы хотите. Смотрите здесь для более подробной информации.источник
Как упоминалось в этом ответе , вы можете запустить следующий набор команд, чтобы получить список привилегий для всех пользователей, связанных с базой данных, таблицами, столбцами и процедурами. Обратите внимание, что вам нужно запустить это из оболочки, а не из командной строки MySQL.
Преимущество этого подхода в том, что вам не нужно устанавливать дополнительное программное обеспечение.
источник
Если вы часто администрируете базы данных, вы, вероятно, захотите сохранить жесткие привилегии. Вы можете использовать хранимую процедуру, чтобы быстро запустить проверку. Этот пример работает в mariadb, возможно, потребуется настроить для работы со стандартной версией mysql.
Воспользовавшись ответом Мансура Али, немного изменив порядок столбцов и добавив их в некоторый порядок, чтобы лучше организовать вывод.
Используя root-логин:
Вместо этого вы можете изменить процедуру, чтобы проверить таблицу mysql.user.
Использование с использованием root-логина:
Я использовал mysql workbench в Ubuntu, чтобы выполнить процедуру создания части этого ответа.
Помимо этого и немного не по теме, но у вас также может быть процедура для показа неизвестных хостов или пользователей. Пример для неизвестных хостов:
Замечание об использовании: Укажите строку хостов, разделенных запятыми, поэтому используется только один набор '':
Вы также можете сделать переменную столбца включением другого параметра в процедуру и вызвать его с помощью ShowUnknownHosts (user, 'user1, user2'); например.
источник