Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
f1:mysql_server_permisos [2018/06/20 14:37] lmachucaf1:mysql_server_permisos [2019/07/12 15:20] (actual) lmachuca
Línea 1: Línea 1:
-===== MySQL Server Configurar Permisos =====+====== MySQL Server Configurar Permisos ======
  
-Una vez instalado e iniciado un servicio MySQL, es posible entrar por una consola al usuario **root** para llevar a cabo el levantamiento de **usuarios** y **bases de datos** inicial:+Una vez [[MySQL Server|instalado e iniciado un servicio MySQL]], es posible entrar por una consola al usuario **root** para llevar a cabo el levantamiento de **usuarios** y **bases de datos** inicial:
  
 Linux / consolas: Linux / consolas:
Línea 7: Línea 7:
   mysql -u root -p   mysql -u root -p
   (contraseña de root)   (contraseña de root)
-  +  # Alternativamente, en Debian 9 o 10 con las notas de post-instalación de la página anterior 
 +  mysql -h localhost -u root -p 
  
 GUI Windows (Query Browser, etc): GUI Windows (Query Browser, etc):
Línea 24: Línea 26:
   * El software cliente se conecta a una base de datos, por ejemplo ''db_crux_helpcom''.   * El software cliente se conecta a una base de datos, por ejemplo ''db_crux_helpcom''.
   * El software cliente necesita permisos para -al menos- insertar, modificar y eliminar libremente información en la base de datos deseada.   * El software cliente necesita permisos para -al menos- insertar, modificar y eliminar libremente información en la base de datos deseada.
 +  * Para poder modificar tablas en caso de actualizaciones, es mejor usar un usuario diferente el cual tiene permisos para truncar, alterar y borrar según sea necesario. En este caso crearemos el usuario ''helpcom_db_admin''.
  
-==== Base de Datos y Permisos para el Cliente ====+===== Base de Datos de Aplicación =====
  
-Las siguientes instrucciones **para MySQL ≥ 5.1** permiten generar los usuarios y permisos necesarios:+Estos pasos se llevan a cabo con un usuario con privilegios, usualmente ''root''.
  
-**Permisos rápidos, sin mayores configuraciones de seguridad**+Aquí cambiamos el "crux" y "helpcom" por el nombre de producto y nombre de la base de datos que deseemos.
  
 <code mysql> <code mysql>
-CREATE USER helpcom_db IDENTIFIED BY '**********'; 
 CREATE DATABASE db_crux_helpcom; CREATE DATABASE db_crux_helpcom;
-GRANT ALL ON db_crux_helpcom.* TO helpcom_db; +</code>
-FLUSH PRIVILEGES;+
  
 +
 +===== Usuario de Aplicación Cliente =====
 +
 +Las siguientes instrucciones **para MySQL ≥ 5.1** permiten generar los usuarios y permisos necesarios:
 +
 +** Creación del usuario**
 +
 +<code mysql>
 +CREATE USER helpcom_db IDENTIFIED BY '**********';
 </code> </code>
  
-Con estos permisos, tanto el software de Helpcom como las aplicaciones clientes que se conecten (Query Browser, etc), pueden hacer de todo en la base de datos seleccionada. **Esto incluye borrar todas las tablas y datos**. Sin embargo no es posible hacer nada fuera de la base de datos, incluyendo crear bases de datos nuevas. Sólo se recomienda esta configuración cuando se sabe que no se necesita específicamente nada más granular. 
  
 **Permisos mínimos** **Permisos mínimos**
 +
 +(Reemplazar "nombreproducto" por el nombre de producto por ejemplo ''crux'', ''remuneraciones'', etc)
  
 <code mysql> <code mysql>
-CREATE USER helpcom_db IDENTIFIED BY '**********'; +GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE 
-CREATE DATABASE db_crux_helpcom+CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW 
-GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW, EXECUTE, INDEX, TRIGGER ON db_crux_helpcom.* TO helpcom_db;+, EXECUTE, INDEX, TRIGGER  
 +ON `db\_nombreproducto\_%`TO helpcom_db
 +GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE 
 +, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW 
 +, EXECUTE, INDEX, TRIGGER  
 +ON `%helpcom%`* TO helpcom_db;
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
- 
 </code> </code>
  
-**Nota**: bajo estos permisos, para poder llevar a cabo actualizaciones de estructura de tablas (''ALTER'') o poder limpiar o borrar la base de datos (''CREATE'', ''DROP''), o llevar cualquier acción administrativa en MySQL (crear usuarios o cambiar permisos) es necesario **conectar como localhost** lo que significa conectarse directamente desde el mismo servidor, o utilizar un puente SSH para acceder al puerto de manera local. +**Nota**: bajo estos permisos, para poder llevar a cabo actualizaciones de estructura de tablas (''ALTER'') o poder limpiar o borrar la base de datos (''CREATE'', ''DROP''), o llevar cualquier acción administrativa en MySQL (crear usuarios o cambiar permisos) es necesario **conectar como root en localhost** lo que significa conectarse directamente desde el mismo servidor, o utilizar un puente SSH para acceder al puerto de manera local. El siguiente paso crea un **usuario de administración** para la base de datos, dedicado a poder alterar las estructuras, borrar tablas o subir dumps.
  
-==== Alterar Estructuras ====+===== Usuario de Administración =====
  
-Para permitir al usuario ''helpcom_db'' actualizar la estructura de las tablas se necesita agregar los permisos ''ALTER'' y ''ALTER ROUTINE'':+Para permitir alterar la estructura y borrar o subir nuevas tablas, creamos el usuario ''helpcom_admin'' el cual tendrá más privilegios que el usuario de helpcom normal. 
 + 
 +**Creación del usuario**:
  
 <code mysql> <code mysql>
-GRANT ALTER, ALTER ROUTINE ON db_crux_helpcom.* TO helpcom_db;+CREATE USER helpcom_admin IDENTIFIED BY '***********'; 
 +</code> 
 + 
 +**Asignación de permisos** 
 + 
 +<code mysql> 
 +GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE 
 +, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW 
 +, EXECUTE, INDEX, TRIGGER  
 +ALTER, ALTER ROUTINE, CREATE, DROP, REFERENCES 
 +ON `db\_nombreproducto\_%`.* TO helpcom_admin; 
 +GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE 
 +, CREATE TEMPORARY TABLES, CREATE VIEW, SHOW VIEW 
 +, EXECUTE, INDEX, TRIGGER  
 +, ALTER, ALTER ROUTINE, CREATE, DROP, REFERENCES 
 +ON `%helpcom%`.* TO helpcom_admin;
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 +</code>
  
 +:!: Nota: Estos permisos permiten borrar tablas completas.
 +
 +
 +===== Respaldos =====
 +
 +Para [[:Respaldos Diarios Linux|configurar respaldos diarios de MySQL]], éstos son los permisos que la cuenta debe tener:
 +
 +<code mysql>
 +CREATE USER mysqldump@'localhost' IDENTIFIED BY 'mysqldump';
 +GRANT SELECT, LOCK TABLES, SHOW VIEW, TRIGGER ON db_crux_helpcom.* TO mysqldmp@'localhost';
 +GRANT FILE ON *.* TO mysqldump@'localhost';
 +FLUSH PRIVILEGES;
 </code> </code>
  
-----+=====Gestión===== 
 + 
 +Una vez que están aplicados los permisos y se cierra la conexión actual de ''root'', las aplicaciones cliente pueden conectarse usando la cuenta de aplicación ''helpcom_db''.
  
-Una vez que están aplicados estos permisos y se cierra la conexión actual de ''root'', las aplicaciones cliente pueden conectarse y es posible **subir información** a la base de datos, por ejemplo subir un dump para el cliente vía Query Browser / SQLYog.+Para **subir la estructura e información inicial** por ejemplo desde un mysqldump, o para **truncar o borrar tablas**, se debe usar la cuenta ''helpcom_db_admin'' por local o remoto, o la cuenta ''root'' por local.
  
 +Para crear o eliminar bases de datos o crear o eliminar usuarios, se debe **conectar al servidor de manera local** para entrar a la consola de MySQL de ''root''.
  
  
f1/mysql_server_permisos.1529505424.txt.gz · Última modificación: 2018/06/20 14:37 por lmachuca
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0