J'ai quelques utilisateurs sur mon serveur qui ont accès à toutes les bases de données MySQL. J'essaie de révoquer les privilèges, mais je ne suis pas sûr de savoir comment s'y prendre. Par exemple: J'ai un utilisateur bob
qui a accès à toutes les bases de données sur mon serveur. Je lance ce qui suit pour voir quels privilèges bob
a:Les autorisations MySQL pour voir toutes les bases de données
mysql -e "select * from information_schema.user_privileges;" | grep bob
'bob'@'%' def SELECT NO
'bob'@'%' def INSERT NO
'bob'@'%' def UPDATE NO
'bob'@'%' def DELETE NO
'bob'@'%' def CREATE NO
'bob'@'%' def FILE NO
'bob'@'%' def CREATE USER NO
Rien ne saute comme GRANT
, ALL
ou SUPER
. Je crée une nouvelle base de données sometest
, passer au compte bob
et voir que bob
a accès à sometest
. Je ne sais pas ce que je manque ici.
Modifier: J'ai couru SHOW GRANTS FOR 'bob'@'%';
et voir:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ON *.* TO 'bob'@'%'
1) Comment peut-on déposer cette autorisation? Je suppose que si je lance:
REVOKE SELECT, INSERT,... on *.* to 'bob'@'%';
il supprimer les autorisations comme
GRANT ALL ON bobsdb.* TO 'bob'@'%';
que je ne veux pas arriver. Mais peut-être est-il préférable de supprimer tous les privilèges et de les reconstituer à partir de zéro.
2) Comment identifier toutes les permissions de ce type? Dois-je regarder chaque utilisateur?
Merci! Ce n'est pas le problème mais cela m'a aidé à identifier le problème. Voir éditer. – Sal
J'ai modifié le texte pour inclure les réponses à vos questions ultérieures. –