Saltar al contenido

MySQL: otorgar **todos** los privilegios en la base de datos

Pudiera darse el caso de que halles alguna incompatibilidad en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.

Solución:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

Así es como creo mis privilegios de “Superusuario” (aunque normalmente especificaría un host).

NOTA IMPORTANTE

Si bien esta respuesta puede resolver el problema del acceso, WITH GRANT OPTION crea un usuario de MySQL que puede editar los permisos de otros usuarios.

El privilegio GRANT OPTION le permite otorgar a otros usuarios o eliminar de otros usuarios los privilegios que usted mismo posee.

Por razones de seguridad, no debe usar este tipo de cuenta de usuario para ningún proceso al que el público tenga acceso (es decir, un sitio web). Se recomienda que cree un usuario con privilegios de base de datos únicamente para ese tipo de uso.

Esta es una pregunta antigua, pero no creo que la respuesta aceptada sea segura. Es bueno para crear un superusuario, pero no es bueno si desea otorgar privilegios en una sola base de datos.

grant all privileges on mydb.* to [email protected]'%' identified by 'mypasswd';
grant all privileges on mydb.* to [email protected] identified by 'mypasswd';

% parece no cubrir las comunicaciones por socket, que el localhost es para. WITH GRANT OPTION solo es bueno para el superusuario; de lo contrario, suele ser un riesgo para la seguridad.

Actualizar para MySQL 5.7+ parece que esto advierte sobre:

El uso de la declaración GRANT para modificar las propiedades del usuario existentes que no sean los privilegios está en desuso y se eliminará en una versión futura. Utilice la instrucción ALTER USER para esta operación.

Por lo tanto, la configuración de la contraseña debe realizarse con comandos separados. Gracias al comentario de @scary-wombat.

ALTER USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

Espero que esto ayude.

Esto será útil para algunas personas:

Desde la línea de comandos de MySQL:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Lamentablemente, en este punto, newuser no tiene permisos para hacer nada con las bases de datos. De hecho, si newuser incluso intenta iniciar sesión (con la contraseña, contraseña), no podrá acceder al shell de MySQL.

Por tanto, lo primero que se debe hacer es facilitar al usuario el acceso a la información que necesitará.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Los asteriscos en este comando se refieren a la base de datos y la tabla (respectivamente) a las que pueden acceder; este comando específico permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.

Una vez que haya finalizado los permisos que desea configurar para sus nuevos usuarios, asegúrese siempre de volver a cargar todos los privilegios.

FLUSH PRIVILEGES;

Tus cambios ahora estarán en efecto.

Para más información: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Si no se siente cómodo con la línea de comandos, puede usar un cliente como MySQL Workbench, Navicat o SQLyog.

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *