Назад | Перейти на главную страницу

Список всех пользователей со ВСЕМИ ПРИВИЛЕГИЯМИ в MySQL

Мне нужно найти способ перечислить всех пользователей базы данных, у которых есть ALL PRIVILILEGES на *.* (все базы данных и таблицы). Кроме того, было бы здорово, если бы он также мог перечислять только те, у кого GRANT OPTION.

Моя первоначальная мысль заключалась в том, чтобы select User from mysql.user where каждое поле привилегий ="Y". Это приведет к очень длинному запросу. Есть другой, более удобный способ?

На MariaDB всего 28 грантов:

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE. 

Чтобы показать всех пользователей со всеми грантами:

select count(*) as grants, grantee from information_schema.user_privileges group_by grantee having grants >= 28;

Чтобы проверить, правда ли это, вы можете проверить результат из

select * from information_schema.user_privileges;

и сравните :)