Os comento, tengo un servidor sin panel administrador así que lo hago todo a comandos.
Tengo varias bases de datos y me conecto a las bases de datos con root, se, para matarme, pero en este caso no es nada importante.
El problema es que cuando creo un nuevo usuario, aunque no tenga SUPER ni GRANT, este nuevo usuario puede ver todas las bases de datos del sistema y no quiero que las vea :-[
Tengo phpmyadmin pero prefiero aprender a comandos... pongo captura:
(http://i.elhacker.net/i?i=YHZqnitSXIH6TrUnCeQ0umVo)
Creo que el problema está que las bases de datos están en modo "mirarme todos como la meneo", entonces mi duda es ¿Cómo cambiarlo con consola? y ¿Cómo crear una nueva base de datos que sólo vea el nuevo usuario y no otros usuarios similares?
Gracias!
http://dev.mysql.com/doc/refman/5.5/en/privilege-system.html
http://dev.mysql.com/doc/refman/5.5/en/show-grants.html
A leer.
Tengo entendido de que todo lo que muestras en pantalla son tipos de privilegios, no hay usuarios grant, hay usuarios con privilegios GRANT. Si no quieres que vean tus base de datos debes desactivar la casilla SHOW DATABASES.
Pero para asegurarte mejor lee la documentación con calma.
Citar" The SHOW DATABASES privilege enables the account to see database names by issuing the SHOW DATABASE statement. Accounts that do not have this privilege see only databases for which they have some privileges, and cannot use the statement at all if the server was started with the --skip-show-database option. Note that any global privilege is a privilege for the database."
No se si funcione esto porque nunca lo he probado, pero si quieres algo localizado podrias intentar con:
REVOKE SHOW DATABASES ON *.* FROM 'usuario' @ 'localhost';
Mi duda es... si deja de ver las bases dedatos, no tendría pemisos? Creo que sí...
Me he leido todo, lo he probado y nop...
Pues tras probar mucho, me encontre con que:
SHOW DATABASES;
Siempre regresa las bases de datos en las que tienes alguna clase de privilegios. Los privilegios que muestras son globales así que cualquier privilegio que agregues de esa lista hara que el usuario pueda ver todas las bases de datos.
Es mejor si agregas solo los privilegios necesarios para la base de datos en especifico, si es que no requieres permisos globales.
Por ejemplo para otorgar select en una base de datos:
GRANT SELECT ON `basededatos`.* TO 'usuario'@'host';
(Me parece que TO usuario tambien funciona si no necesitas especificar el host.)
Hara que basededatos aparezca en SHOW DATABASES.
Para dar todos los permisos en una base de datos:
GRANT ALL PRIVILEGES ON `basededatos`.* TO 'usuario'@'host';
Mas información en cuanto a syntaxis:
http://dev.mysql.com/doc/refman/5.1/en/grant.html
GENIAL MinusFour ¡Funciona!
Lo único que para dar todos los permisos lo hago con:
GRANT ALL ON basededatos.* TO 'usuario'@'localhost';
Ya que si pongo las comillas en basededatos no me funciona.
En fin, te debo una, cualquier cosa me dices :-)
Cita de: dimitrix en 16 Septiembre 2014, 02:18 AM
GENIAL MinusFour ¡Funciona!
Lo único que para dar todos los permisos lo hago con:
GRANT ALL ON basededatos.* TO 'usuario'@'localhost';
Ya que si pongo las comillas en basededatos no me funciona.
En fin, te debo una, cualquier cosa me dices :-)
No son comillas, son backticks:
`Citar
An identifier may be quoted or unquoted. If an identifier contains special characters or is a reserved word, you must quote it whenever you refer to it.
The identifier quote character is the backtick ("`"):
http://dev.mysql.com/doc/refman/4.1/en/identifiers.html
Eso explica muchas cosas xDDDDD
Los he usado muchas veces en queries, pero en la consola me parece todo los mismos :xD
Gracias de nuevo ^^