Herramientas de usuario

Herramientas del sitio


bloque5:administracion

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
bloque5:administracion [2021/11/16 00:05] – [MySQL Cluster] fernandobloque5:administracion [2022/05/26 15:17] (actual) – borrado fernando
Línea 1: Línea 1:
-======Administración de Sistemas Gestores de BBDD====== 
  
-===== Administración de Usuarios ===== 
- 
-Una de las funciones del SGBD es la de proporcionar seguridad en el acceso a los datos a través de mecanismos de control de acceso. 
- 
-En SQL, y así lo hacen todos los SGBD relacionales, se sigue un modelo Usuario-Privilegio para otorgar acceso a        los objetos de la Base de Datos. Existen una serie de privilegios predefinidos y es el administrador del SGBD el        encargado de asignar o no los privilegios ((https://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html)) a los usuarios sobre determinados objetos (tablas, procedimientos, . . .). 
- 
-Supongamos que somos los administradores de un SGBD MySQL y tenemos que proporcionar acceso a una Base de Datos        para una aplicación //biblioteca// a un desarrollador de mi compañía: 
- 
-<code sql> 
--- Si no hemos creado la base de datos, podemos hacerlo ahora 
-CREATE DATABASE biblioteca; 
- 
--- Crea el usuario asignándole contraseña 
-CREATE USER 'desarrollador' IDENTIFIED BY 'mipassword'; 
- 
--- Indicando el host de conexion del usuario 
--- Desde cualquier host (igual que si se omite) 
-CREATE USER 'desarrollador'@'%' IDENTIFIED BY 'mipassword'; 
- 
--- Usuario para conectarse localmente 
-CREATE USER 'desarrollador'@'localhost' IDENTIFIED BY 'mipassword'; 
- 
--- Usuario para conectarse remotamente 
-CREATE USER 'desarrollador'@'146.167.34.15' IDENTIFIED BY 'mipassword'; 
- 
--- Ver los usuarios  
-SELECT 'desarrollador' FROM mysql.user; 
-SELECT * FROM mysql.user; 
- 
-</code> 
- 
- 
-==== Permisos y privilegios ==== 
-=== Conceder privilegios sobre un objeto: GRANT === 
- 
-Permite conceder privilegios sobre un objeto a un usuario de la Base de Datos. 
-<code sql> 
-    GRANT <privilegio> 
-    ON <objeto> 
-    TO <usuario> 
-    [WITH GRANT OPTIONS] 
-</code> 
- 
-=== Revocar privilegios sobre un objeto: REVOKE === 
- 
-Permite eliminar el privilegio sobre un objeto a un usuario. 
- 
-<code sql> 
-    REVOKE <privilegio> 
-    ON <objeto> 
-    FROM <usuario> 
-</code> 
- 
-=== Tipos de permisos=== 
- 
-^Tipo^Función^ 
-|SELECT | ver las tablas| 
-|INDEX| crear o eliminar índices| 
-|CREATE| usar la sentencia create| 
-|DELETE| eliminar registros de una tabla| 
-|DROP|eliminar elementos de la base de datos| 
-|SHOW TABLES|permite ver las tablas de la base de datos| 
-|USAGE| permite la instrucción USE 'base de datos'| 
- 
-Ejemplos: 
-<code sql> 
--- Uso sin permisos para acceder desde local 
-mysql> GRANT USAGE ON *.* TO 'user'@localhost IDENTIFIED BY 'pass'; 
-  
--- Uso sin permisos para acceder desde remoto 
-mysql> GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; 
- 
--- Conceder todos los privilegios sobre una base de datos en local 
-GRANT ALL privileges ON `mibd`.* TO 'user'@localhost; 
- 
--- Privilegios desde remoto 
-GRANT ALL privileges ON `mibd`.* TO 'user'@'%'; 
-  
--- Mostrar privilegios 
-mysql> SHOW GRANTS FOR 'user'@localhost;  
-  
--- Eliminar privilegios 
-REVOKE ALL PRIVILEGES on *.* from 'user'@localhost; 
-REVOKE USAGE on *.* from 'user'@localhost; 
-  
--- Aplicar los cambios realizados 
-FLUSH PRIVILEGES; 
-  
--- Verificar permisos 
-mysql> SHOW GRANTS FOR 'user'@localhost; 
-</code> 
- 
-{{ :bloque5:mysql_grantrevoke.jpg?700 |}} 
-===== Arquitectura Cliente-Servidor ===== 
-MySQL funciona únicamente bajo la arquitectura cliente-servidor. Esto quiero decir que una vez iniciado MySQL la única forma de gestionarlo es realizando una conexión desde un cliente. Para ello necesitamos unos datos de conexion, principalmente 4: 
-  * Dirección IP del servidor 
-  * Puerto de conexión: el puerto habitual de funcionamiento de MySQL es ''3306''. 
-  * Usuario: siempre necesitamos un usuario para conectarnos.  
-  * Contraseña: necesitamos la contraseña de ese usuario. 
-===== Rendimiento de acceso a datos ===== 
-Podemos comprobar el rendimiento de las consultas ejecutadas mediante la herramienta //profiler//: 
- 
-[[https://dev.mysql.com/doc/refman/8.0/en/show-profile.html|MySQL Profiler]] 
-===== Bases de Datos Distribuidas ===== 
-====MySQL Cluster==== 
-A veces nos encontramos en proyectos donde los entornos de producción requieren de un sistema que garantice la alta disponibilidad. Una de las soluciones para conseguir esto es montar la base de datos en un clúster de tal forma que no haya ningún punto débil en el sistema y si se cae un nodo que el sistema no deje de dar servicio. 
- 
-Un //MySQL Cluster// consiste en un conjunto de máquinas, cada una ejecutando un número de procesos incluyendo servidores MySQL , nodos de datos para NDB Cluster, servidores de administración, y (posiblemente) programas especializados de acceso a datos. La relación de estos componentes en un cluster se muestra aquí:  
- 
-{{ :bloque5:cluster-components-1.png?400 |}} 
- 
-Todos estos programas funcionan juntos para formar un MySQL Cluster. Cuando se almacenan los datos en el motor NDB Cluster, las tablas se almacenan en los nodos de datos. Tales tablas son directamente accesibles desde todos los otros servidores MySQL en el cluster. Por lo tanto, en una aplicación de pago que almacene datos en un cluster, si una aplicación actualiza el salario de un empleado, todos los otros servidores MySQL que acceden a estos datos pueden ver el cambio inmediatamente.  
- 
----- 
- 
- 
-(c) {{date> %Y}} Fernando Valdeón 
bloque5/administracion.1637021153.txt.gz · Última modificación: 2024/09/16 15:37 (editor externo)