Herramientas de usuario

Herramientas del sitio


bases_de_datos:mysql: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
bases_de_datos:mysql:administracion [2016/12/09 15:16] – [Arquitecturas de almacenamiento de tablas] albertobases_de_datos:mysql:administracion [2016/12/10 12:40] (actual) – [Crear usuarios y especificar privilegios] alberto
Línea 10: Línea 10:
 ==== Arquitecturas de almacenamiento de tablas ==== ==== Arquitecturas de almacenamiento de tablas ====
 Las tablas pueden estar almacenadas de diferentes formas, incluso dentro de una misma base de datos. Cada tipo de tabla, afecta en el espacio que consumen en memoria y disco, y en la velocidad de ejecución de las sentencias MySQL.\\ Las tablas pueden estar almacenadas de diferentes formas, incluso dentro de una misma base de datos. Cada tipo de tabla, afecta en el espacio que consumen en memoria y disco, y en la velocidad de ejecución de las sentencias MySQL.\\
 +
 +Para pasar tablas de un tipo a otro, se puede hacer sin problema (siempre que se tengan los privilegios adecuados), a través de la sentencia:
 +<code mysql> 
 +ALTER TABLE NombreTabla TYPE=TipoTabla;
 +</code>
 +
 A continuación se detallan los diferentes tipos de tablas: A continuación se detallan los diferentes tipos de tablas:
  
Línea 27: Línea 33:
  
 O a través de la utilidad //myisamchk//, que se encuentra como programa ejecutable, dentro de la carpeta /bin. O a través de la utilidad //myisamchk//, que se encuentra como programa ejecutable, dentro de la carpeta /bin.
- 
  
   * **Compressed**: Formato de tablas de solo lectura, generado por la utilidad //myisampack//, que se encuentra en la carpeta /bin de la distribución de MySQL. Se caracterizan por el ahorro de espacio en el disco y es conveniente para dispositivos de almacenamiento lentos como los CD-ROM.\\   * **Compressed**: Formato de tablas de solo lectura, generado por la utilidad //myisampack//, que se encuentra en la carpeta /bin de la distribución de MySQL. Se caracterizan por el ahorro de espacio en el disco y es conveniente para dispositivos de almacenamiento lentos como los CD-ROM.\\
Línea 52: Línea 57:
  
 Por defecto, InnoDB crea un archivo de datos llamado //ibdata1// de 10MB autoextensible y dos archivos de log llamados //ib_logfile0// y //ib_logfile1//, todos ellos en el directorio de datos de MySQL. Por ello InnoDB sólo crea por cada tabla un fichero de descripción de la tabla con extensión .frm. Los datos e índices quedan en el tablespace definido.\\ Por defecto, InnoDB crea un archivo de datos llamado //ibdata1// de 10MB autoextensible y dos archivos de log llamados //ib_logfile0// y //ib_logfile1//, todos ellos en el directorio de datos de MySQL. Por ello InnoDB sólo crea por cada tabla un fichero de descripción de la tabla con extensión .frm. Los datos e índices quedan en el tablespace definido.\\
 +===== Configuración =====
 +Los programas que componen MySQL (mysqld, mysqladmin, etc) pueden ser configurados, por orden de mayor a menor preferencia:
 +  - Línea de comandos.
 +  - Ficheros de opciones.
 +  - Valores de variables de entorno.
  
 +==== Configuración por línea de comandos ====
 +Deben seguir las siguientes reglas:
 +  * Siempre se introducen después del nombre del programa.
 +  * La opción va precedida de un guión si se expresa de la forma corta, o de dos guiones si es la forma larga. Por ejemplo:
 +<WRAP box>
 +    c:\mysql\bin>mysql --help  # Forma larga
 +    c:\mysql\bin>mysql -?      # Forma corta
 +</WRAP>
 +  * Si la opción va seguida de un valor, si se usa la forma larga se especifica tras el símbolo '='. Si se utiliza la forma corta, no es necesario ningún símbolo, se expresa a continuación de la opción, siendo opcional el incluir un espacio entre ambas (salvo en el caso de la contraseña, que no está permitido el espacio).
 +  * Algunos de los programas tienen variables que son configurables. Para configurar estas variables se utiliza la opción **-set-variable**. Por ejemplo: 
 +<WRAP box>
 +    c:\mysql\bin>mysql --set-variable=max_allowed_packet=16M
 +</WRAP>
 +
 +Se recomienda visitar el [[http://dev.mysql.com/doc/refman/5.7/en/|Manual de Referencia de MySQL]] para localizar toda la información necesaria.
 +
 +==== Configuración por ficheros de configuración ====
 +Los ficheros de configuración sirven para que los programas carguen la misma configuración al arrancar.\\
 +Listado de programas que aguantan ficheros de configuración: myisamchk, myisampack, mysql, mysql.server, mysqladmin, mysqlbinlog, mysqlcc, mysqlcheck, mysql_safe, mysqldump, mysqld, mysqlhotcopy, mysqlimport, mysqlshow.\\
 +
 +Los programas MySQL pueden consultar más de un fichero de configuración.\\
 +Bajo Windows, por orden de mayor a menor preferencia:
 +  - WINDIR\my.ini    Opciones globales (WINDIR es la ruta del sistema Windows, típicamente C:\Windows).
 +  - C:\my.cnf        Opciones globales.
 +
 +Bajo Linux, por orden de mayor a menor preferencia:
 +  - /etc/my.cnf    Opciones globales.
 +  - DATADIR/my.cnf Opciones específicas del servidor (DATADIR hace referencia al directorio de datos de MySQL).
 +  - ~/.my.cnf      Opciones específicas del usuario.
 +
 +Ha tener en cuenta:
 +  * La sintaxis de estos ficheros es muy similar a la indicada en el apartado anterior.\\
 +  * Las líneas en blanco se ignoran.\\
 +  * Los comentarios (línea) se indican mediante el carácter '#', ó ';'.\\
 +  * **[grupo]** Cuando algo aparece entre corchetes, se refiere al nombre del programa MySQL sobre el que tendrán efecto las opciones que se muestran a continuación. El grupo [client] permite especificar opciones que se aplican de forma común a todos los programas cliente.
 +  * En el caso de **set-variable = nombre_variable=valor** hay que tener en cuenta que los espacios alrededor del símbolo '=' son válidos en la primera igualdad, pero no en la segunda.
  
-Para pasar tablas de un tipo a otro, se puede hacer sin problema (siempre que se tengan los privilegios adecuados), a través de la sentencia: 
-<code mysql>  
-ALTER TABLE NombreTabla TYPE=TipoTabla; 
-</code> 
-===== Configuración ===== 
 ===== Administración de usuarios ===== ===== Administración de usuarios =====
 +El administrador del Sistema MySQL, puede especificar:
 +  * Qué usuarios pueden conectarse al servidor (usuario).
 +  * Desde dónde pueden conectarse (host).
 +  * Qué pueden hacer mientras están conectados (privilegios).
 +
 +El "diccionario de datos" de MySQL se encuentra en el "directorio de datos" en una base de datos llamada //mysql//. En esta base de datos aparecen cuatro tablas que disponen de toda la información necesaria acerca de los usuarios y sus privilegios. Las tablas son las siguientes:
 +  * **user**: Usuarios que pueden conectar con el servidor.
 +  * **db**: Privilegios a nivel base de datos.
 +  * **tables_priv**: Privilegios a nivel de tabla.
 +  * **columns_priv**: Privilegios a nivel de columna.
 +
 +Aunque se puden manejar los privilegios con la manipulación de estas cuatro tablas, es más cómodo usar las sentencias GRANT (crear usuarios y especificar privilegios) y REVOKE (eliminar privilegios).
 +
 +==== Crear usuarios y especificar privilegios ====
 +Sintaxis de la sentencia GRANT:
 +<WRAP box>
 +    GRANT privilegios (columnas)
 +    ON nivelPrivilegio
 +    TO usuario@host IDENTIFIED BY "contraseña"
 +    [WITH GRANT OPTION];
 +</WRAP>
 +
 +Vamos a ver qué significa cada cláusula de esta sentencia:
 +  * **Privilegios**: Se muestran a continuación los diferentes privilegios que pueden asignarse a los usuarios.
 +    * //Privilegios aplicados a bases de datos, tablas y columnas://
 +
 +^ Privilegio              ^ Descripción                                              ^
 +| ALTER                   | Permite alterar tablas e índices                         |
 +| CREATE                  | Permite crear bases de datos y tablas                    |
 +| CREATE TEMPORARY TABLES | Permite crear tablas temporales (CREATE TEMPORARY TABLE) |
 +| DELETE                  | Permite borrar registros de tablas existentes            |
 +| DROP                    | Permite eliminar bases de datos y tablas                 |
 +| INDEX                   | Permite crear y eliminar índices asociados a tablas      |
 +| INSERT                  | Permite insertar nuevos registros en tablas              |
 +| SELECT                  | Permite consultar información en tablas                  |
 +| UPDATE                  | Permite modificar el contenido de registros existentes   |
 +
 +    * //Privilegios administrativos://
 +
 +^ Privilegio ^ Descripción ^
 +| FILE | Permite leer y escribir archivos en el servidor (SELECT ... INTO OUTFILE y LOAD DATA INFILE) |
 +| PROCESS | Permite ver información sobre los procesos abiertos en el servidor (SHOW FULL PROCESSLIST) |
 +| RELOAD | Permite solicitar al servidor que cargue de nuevo en memoria las tablas del diccionario de datos(FLUSH)|
 +| REPLICATION CLIENT | Permite al usuario preguntar dónde está el servidor esclavo o maestro |
 +| REPLICATION SLAVE | Permiso necesario para que el usuario pueda acceder al fichero //binary log// del maestro desde el esclavo  |
 +| SHUTDOWN | Permite cerrar el servidor (mysqladmin shutdown) |
 +
 +
 +    * //Privilegios especiales://
 +
 +^ Privilegio ^ Descripción ^
 +| ALL [PRIVILEGES] | Permite agrupar todos los privilegios en uno solo |
 +| USAGE | Es un privilegio especial que significa "ausencia de privilegios" |
 +
 +
 +  * **Nivel de privilegio**: Puede aplicarse a cuatro niveles, de mayores privilegios a menor:
 +    - //Nivel global//: Se aplican privilegios a todas las bases de datos y tablas del servidor. La forma de indicarlo será: GRANT privilegios ON *.* ...
 +    - //Nivel base de datos//: Se aplican privilegios sobre todas las tablas de la base de datos nombrada: GRANT privilegios ON NombreBaseDatos.* ...
 +    - //Nivel de tabla//: Se aplican privilegios sobre todas las columnas de la tabla especificada: GRANT privilegios ON NombreBaseDatos.NombreTabla ...
 +    - //Nivel  de columna//: Se aplican privilegios sobre las/s columna/s seleccionadas de una tabla determinada.
 +
 +  * **Usuario@host**: El usuario de la base de datos se especifica mediante el usuario y el host desde el que se conecta. De esta manera es posible diferenciar a los usuarios según de dónde se conecten, y aplicarles en consecuencia diferentes privilegios.\\ Lo nombre de usuarios son independientes de los nombres de usuario del Sistema Operativo.\\ Como nombre de host, pueden utilizarse direcciones IP o nombres DNS. También está permitido el uso de caracteres comodín, lo que nos va a permitir especificar más de un host, o incluso cualquier host, por ejemplo: alberto.gargoles@"%".\\ Si queremos especificar cualquier nombre de usuario, podemos hacerlo dejando en blanco éste, por ejemplo: ''@uah.es
 +  * **Contraseña**: Si no se especifica la clausula IDENTIFIED BY cuando se crea un usuario, no se establece contraseña para ese usuario, lo que puede suponer un problema de seguridad. Si el usuario ya tenía contraseña, ésta es sobreescrita. Si el usuario tenía contraseña y no se especifica la cláusula IDENTIFIED BY, la contraseña antigua se mantiene.
 +  * **Cláusula WITH GRANT OPTION**: Es opcional, y significa que el usuario tiene la capacidad de transmitir sus privilegios a otros usuarios.
 +
 +==== Eliminar privilegios ====
 +Sintaxis de la sentencia REVOKE:
 +<WRAP box>
 +    REVOKE privilegios (columnas)
 +    ON nivelPrivilegio
 +    FROM usuario@host
 +</WRAP>
 +
 +Los privilegios no tienen porqué coincidir con todos los que tiene el usuario, ya que es posible eliminar sólo la parte que interese.\\ Son los mismos privilegios y nivel de privilegio que se especificaron en el apartado anterior.\\
 +
 +Para eliminar de golpe todos los privilegios de uno o varios usuarios, se puede usar la forma:
 +<WRAP box>
 +    REVOKE ALL PRIVILEGES, GRANT OPTION FROM usuario@host [,usuario@host ...]
 +</WRAP>
 +
 +Eliminar todos los privilegios no supone eliminar al usuario, ya que éste aún permanece en un registro de la tabla //mysql.user//, lo que significa que aún puede establecer conexión con el servidor.
 +
 +==== Eliminar una cuenta de usuario ====
 +<WRAP box>
 +    DROP USER 'usuario'@'host' [,'usuario'@'host' ...]
 +</WRAP>
 +
 +Para poder eliminar a un usuario, anteriormente le han tenido que haber eliminado todos los privilegios.\\
 +
 +=== Ver privilegios ===
 +Pueden verse los privilegios de un usuario con la sentencia SHOW GRANTS:
 +<WRAP box>
 +    SHOW GRANTS FOR 'usuario'@'host' [,'usuario'@'host' ...]
 +</WRAP>
 ===== Índices ===== ===== Índices =====
 ===== Copias de seguridad ===== ===== Copias de seguridad =====
 ===== Ficheros Logs ===== ===== Ficheros Logs =====
 ===== Replicación ===== ===== Replicación =====
bases_de_datos/mysql/administracion.1481293009.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki