Crear Usuario en MySQL

   Ya he explicado anteriormente sentencias de MySQL, pero nunca he explicado como manejar usuarios desde el mismo, crearlos, modificar permisos, eliminarlos y manipular todos sus datos.

   Para esto debemos tener permisos de administrador, por lo general es "root", pero cualquier cuenta con privilegios "GRANT" (mas adelante explico esto) es capaz de crear nuevos usuarios.

   El fin de este post es mostrar de una forma sencilla y práctica como gestionar usuarios con MySQL desde la línea de comandos, cosa que muchas páginas hacen pero de forma complicada y con mucho enredo en los códigos, para comenzar vamos a crear un usuario.

   La forma correcta de hacer esto es crear el usuario desde el propio MySQL y no dar niveles de acceso con tablas diferentes, porque no tendría sentido crear una tabla "Usuarios" en cada una de las Bases de Datos que yo tenga en mi sistema, es algo ilógico y muy engorroso, sin contar el tiempo que se pierde haciendo esto.

   Primero nos ubicamos en la BD de MySQL:

USE mysql;

   Luego creamos el usuario con todos los privilegios:

GRANT permisos ON mi_bd.mi_tabla TO 'usuario'@'mi_host' 
IDENTIFIED BY 'clave' WITH GRANT OPTION;

   En Esta línea tenemos lo siguiente:

  • permisos: permisos del usuario.
  • mi_bd: la base de datos.
  • mi_tabla: la tabla donde tendrá acceso el usuario.
  • administrador: nombre del usuario.
  • mi_host: dirección o nombre del host.
  • clave: clave del usuario.
  • GRANT OPTION: esto es para conceder al usuario la herencia, es decir, que el usuario que estamos creando pueda conceder a otros usuarios sus mismos permisos. MySQL recomienda no utilizar esta opción, pero yo la utilizo solo para usuarios administradores.

   En caso de tener la base de datos en el equipo local colocamos en la dirección "localhost", y si queremos que el usuario tenga acceso a todas las tablas en todas las bases de datos (que es la idea de este ejemplo) colocamos un ' * ', que significa todo.


GRANT permisos ON *.* TO 'usuario'@'localhost' 
IDENTIFIED BY 'clave' WITH GRANT OPTION;

   Y si queremos que sea en cualquier dirección y no solo en el equipo local (localhost), utilizamos el ' % ', que significa todo para lo que es la dirección del host en MySQL.


GRANT permisos ON *.* TO 'usuario'@'%' 
IDENTIFIED BY 'clave' WITH GRANT OPTION;

   Los permisos que generálmente se utilizan son los siguientes:

  • SELECT
  • INSERT
  • UPDATE
  • CREATE
  • DROP
  • DELETE

   Para crear con algunos privilegios (seguiré utilizando "localhost" ya que son ejemplos sencillos):


GRANT SELECT, INSERT, UPDATE ON *.* TO 'usuario'@'localhost'
IDENTIFIED BY 'clave' WITH GRANT OPTION;

   Para crear un usuario con todos los privilegios seria lo siguiente:


GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'localhost' 
IDENTIFIED BY 'clave' WITH GRANT OPTION;

   También podemos consultar todos los privilegios que existen para los usuarios desde la página oficial de MySQL:

Sintaxis GRANT



Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión