AGREGAR NUEVOS USUARIOS Para que nosotros generemos un nuevo usuario lo primero que debemos de hacer es autenticarnos en el servidor. mysql -u root -p -h localhost Visualizar que usuario soy (o estoy ubicado) MariaDB [mysql]> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.001 sec) MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | clasejoin | | information_schema | | myapp | | mysql | | performance_schema | | phpmyadmin | | subconsultas | | test | | turismo | +--------------------+ 9 rows in set (0.001 sec) MariaDB [(none)]> use mysql; MariaDB [mysql]> select user from user; +--------+ | User | +--------+ | foo | | javier | | sofia | | root | | root | | root | +--------+ 6 rows in set (0.002 sec) Posteriormente debemos de generar un nuevo Usuario, Para esto ejecutamos las siguiente sentencia. CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'password'; SELECT PASSWORD('mipassword'); Hasta este punto, nosotros ya podemos autenticarnos con el servidor utilizando el nuevo usuario, sin embargo, una vez autenticado las acciones que podemos hacer son mínimas, debido a que este usuario no posee los permisos necesarios para trabajar con las bases de datos. MariaDB [mysql]> CREATE USER 'admon'@'localhost' IDENTIFIED BY 'admin'; CREATE USER 'admon1'@'localhost' IDENTIFIED BY 'admin'; CREATE USER 'usuario'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.063 sec) MariaDB [mysql]> select user from user; +---------+ | User | +---------+ | foo | | javier | | sofia | | root | | root | | root | | usuario | +---------+ 7 rows in set (0.002 sec) ASIGNAR PERMISOS Para poder establecer permisos, las siguiente sentencias deben de ejecutarse utilizando el usuario root. Si queremos que el nuevo usuario tenga permisos de administrador (Todos los permisos), debemos de ejecutar la siguiente sentencia. GRANT ALL PRIVILEGES ON *.* TO 'nombre_usuario'@'localhost'; Ejemplo: GRANT ALL PRIVILEGES ON *.* TO 'admon'@'localhost'; Los asteriscos indican que los permisos serán asignados a todas las bases de datos y a todas las tablas (primer asteriscos bases de datos, segundo asterisco tablas). Si queremos asignar permisos para ciertas acciones, la sentencia quedaría de la siguiente manera. Reemplazamos ALL PRIVILEGES y colocamos las acciones que queremos asignar. GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON turismo.* TO 'admon3'@'localhost' IDENTIFIED BY '123'; show grants for 'admon3'@'localhost'; En esta ocasión estamos indicando que el nuevo usuario podrá consultar, crear, actualizar y eliminar registros, así cómo podrá crear o eliminar elementos (tablas, índices, columnas, funciones, stores, etc ...). Todos estos permisos serán válidos únicamente en la base de datos turismo y se aplicarán a todas las tablas. Si queremos asignar permisos únicamente a una tabla, reemplazamos el asteriscos por el nombre de la tabla. Una vez hayamos finalizado con los permisos, el último paso será refrescarlos. FLUSH PRIVILEGES; Insertar MariaDB [turismo]> insert into visitantes(nombre,ciudad,sexo,montocompra) values('Javier Ospina','Medellin','Masculino',5000000); Query OK, 1 row affected (0.217 sec) MariaDB [turismo]> MariaDB [turismo]> select * from visitantes; +----+---------------------------+--------------+-----------+-------------+ | id | nombre | ciudad | sexo | montocompra | +----+---------------------------+--------------+-----------+-------------+ | 1 | Juan carlos Perez | Bogota | Masculino | 1500000 | | 2 | Elizabeth Torres | Bogota | Femenino | 1000000 | | 3 | Carmen Elvira Montes | Medellin | Femenino | 2000000 | | 4 | Diana Patricia Garcia | Medellin | Femenino | 2500000 | | 5 | Juan Alberto Cardona | Barranquilla | Masculino | 3500000 | | 6 | Felipe Ardila Castro | Barranquilla | Masculino | 3000000 | | 7 | Mariana Ocampo Cifuentes | Barranquilla | Femenino | 1800000 | | 8 | Mirian Ocampo Cifuentes | Cartagena | Femenino | 1600000 | | 9 | Martha Betancurt Ossa | Cartagena | Femenino | 6000000 | | 10 | Mateo Vasquez Posada | Cartagena | Masculino | 3000000 | | 11 | Pablo Andres Arboleda | Cartagena | Masculino | 1500000 | | 12 | Ana Maria Guerrero Guasca | cartagena | femenino | 5000000 | | 13 | Pablo Perez | Medellin | Masculino | 5000000 | +----+---------------------------+--------------+-----------+-------------+ 13 rows in set (0.001 sec) Eliminar MariaDB [turismo]> delete from visitantes where id=12; Query OK, 1 row affected (0.145 sec) VER LOS PERMISOS MariaDB [(none)]> show grants for 'admon3'@'localhost'; +---------------------------------------------------------------------------------------------------------------+ | Grants for admon3@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'admon3'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' | | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `turismo`.* TO 'admon3'@'localhost' | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.004 sec) Remover permisos en concreto (Ejemplo delete). REVOKE DELETE ON BD.* FROM 'usuario'@'localhost'; EJEMPLO: Eliminar o quitar el permiso de eliminar al usuario admon3 MariaDB [(none)]> REVOKE delete ON turismo.* FROM 'admon3'@'localhost'; Query OK, 0 rows affected (0.062 sec) MariaDB [(none)]> show grants for 'admon3'@'localhost'; +---------------------------------------------------------------------------------------------------------------+ | Grants for admon3@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'admon3'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' | | GRANT SELECT, INSERT, UPDATE, CREATE, DROP ON `turismo`.* TO 'admon3'@'localhost' | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.000 sec) PERMISOS Aquí un listado de algunos permisos que podemos asignar. CREATE permite crear nuevas tablas o bases de datos. DROP permite eliminar tablas o bases de datos. DELETE permite eliminar registros de tablas. INSERT permite insertar registros en tablas. SELECT permite leer registros en las tablas. UPDATE permite actualizar registros en las tablas. GRANT OPTION permite remover permisos de usuarios. SHOW DATABASE Permite listar las bases de datos existentes. SENTENCIAS A TENER EN CUENTA Listado de todos los usuarios. SELECT User FROM mysql.user; Eliminar un usuario. DROP USER 'usuario'@'localhost'; Ejemplo: DROP USER 'admon'@'localhost'; MariaDB [mysql]> DROP USER 'admon'@'localhost'; Query OK, 0 rows affected (0.072 sec) Verificar: MariaDB [mysql]> select user from user ; +--------+ | User | +--------+ | foo | | javier | | sofia | | root | | root | | Amon | | admon1 | | admon3 | | root | +--------+ 9 rows in set (0.002 sec) MODIFICAR LA CLAVE DE UN USUARIO SET PASSWORD FOR 'admon3'@'localhost' = PASSWORD('123456');