usted - usuario mysql como crear borrar y asignar privilegios
Eliminar privilegios de la base de datos MySQL (2)
Como nota al margen, la razón revoke usage on *.* from ''phpmyadmin''@''localhost'';
no funciona es bastante simple: no hay subvención llamada USAGE
.
Las concesiones nombradas reales están en la documentación de MySQL
La concesión USAGE
es una concesión lógica. ¿Cómo? ''phpmyadmin'' @ ''localhost'' tiene una entrada en mysql.user
donde user = ''phpmyadmin'' y host = ''localhost''. Cualquier fila en mysql.user semánticamente significa USAGE
. Ejecutando DROP USER ''phpmyadmin''@''localhost'';
debería funcionar bien Debajo del capó, realmente está haciendo esto:
DELETE FROM mysql.user WHERE user=''phpmyadmin'' and host=''localhost'';
DELETE FROM mysql.db WHERE user=''phpmyadmin'' and host=''localhost'';
FLUSH PRIVILEGES;
Por lo tanto, la eliminación de una fila de mysql.user
constituye la ejecución de REVOKE USAGE
, aunque REVOKE USAGE
no se puede ejecutar literalmente.
Antes de que piense que se trata de una pregunta duplicada, creo que tengo un caso único, incluso si es un poco tonto.
Hace unos días, actualicé la versión de MySQL en mi servidor Ubuntu 10.04 a 5.3.3 (está por delante de los lanzamientos de Ubuntu para 10.04). Hoy, intenté iniciar sesión en phpMyAdmin para encontrar algo y descubrí la Connection for controluser as defined in your configuration failed
un tanto temida Connection for controluser as defined in your configuration failed
error de Connection for controluser as defined in your configuration failed
.
Después de seguir las descripciones de varias preguntas sobre cómo solucionarlo, me he quedado atascado.
- Intenté reconfigurar phpMyAdmin , sin éxito.
- Intenté desinstalar phpMyadmin y volver a instalarlo , pero no pude eliminar los privilegios de la base de datos y no pude.
- Luego intenté eliminar manualmente los privilegios del usuario -de manera tonta, podría agregar- desde el archivo db, luego soltando el db, luego el usuario (con
flush privileges
). - Eliminé por completo la instalación de phpMyAdmin (eliminando la aplicación y el directorio / etc / phpmyadmin) y reinstalé (usando apt-get) pero dijo que los permisos para el usuario de phpmyadmin ya existían:
granting access to database phpmyadmin for phpmyadmin@localhost: already exists
Entonces, aquí está lo que me queda. Tengo una concesión que no puedo modificar, ni revocar:
mysql> show grants for ''phpmyadmin''@''localhost'';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ''phpmyadmin''@''localhost'' IDENTIFIED BY PASSWORD ''*46CFC7938B60837F46B610A2D10C248874555C14'' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO ''phpmyadmin''@''localhost'' |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.26 sec)
mysql> revoke usage on *.* from ''phpmyadmin''@''localhost'';
ERROR 1141 (42000): There is no such grant defined for user ''phpmyadmin'' on host ''localhost''
mysql> revoke usage on *.* from ''phpmyadmin''@''localhost'' identified by ''trustno1'';
ERROR 1141 (42000): There is no such grant defined for user ''phpmyadmin'' on host ''localhost''
(No se preocupe, ya no uso esta contraseña, pero era la contraseña que se utilizó anteriormente y no es la que elegí para la nueva instalación de phpmyadmin).
¿Cómo elimino totalmente estas concesiones / privilegios? Me complace empezar de nuevo desde cero si es necesario (phpmyadmin es decir, no es el db).
El privilegio USAGE en mysql simplemente significa que no hay privilegios para el usuario ''phpadmin'' @ ''localhost'' definido a nivel global *.*
. Además, el mismo usuario tiene ALL-privilege en la base de datos phpmyadmin phpadmin.*
.
Por lo tanto, si desea eliminar todos los privilegios y comenzar totalmente desde cero, haga lo siguiente:
Revoca todos los privilegios en el nivel de la base de datos:
REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM ''phpmyadmin''@''localhost'';
Coloque al usuario ''phpmyadmin'' @ ''localhost''
DROP USER ''phpmyadmin''@''localhost'';
El procedimiento anterior eliminará completamente al usuario de su instancia, esto significa que puede recrearlo desde cero.
Para darle un poco de información sobre lo descrito anteriormente: tan pronto como cree un usuario, la tabla mysql.user
se completará. Si observa un registro en él, verá al usuario y todos los privilegios configurados en ''N''
. Si haces un show grants for ''phpmyadmin''@''localhost'';
verás, el ya familliar, resultado anterior. Simplemente traducido como "sin privilegios a nivel global para el usuario". Ahora, otorgue ALL
a este usuario a nivel de base de datos, esto se almacenará en la tabla mysql.db
. Si hace un SELECT * FROM mysql.db WHERE db = ''nameofdb'';
verás una ''Y''
en cada priv.
Arriba descrito muestra el escenario que tienes en tu db en el presente. Entonces, tener un usuario que solo tenga privilegio USAGE
significa que este usuario puede conectarse, pero además de SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;
él no tiene otros privilegios.