Administración MySQL

Es un conjunto de programas con prestaciones que se incluye en la distribución MySQL para facilitar la administración. El programa más utilizado es mysqladmin.

Comandos

Todos los comandos MySQL excepto mysqlshow, adoptan como mínimo, tres parámetros estándar, como vemos en la tabla de abajo:

tabla_8_1

 Ejemplo

ejemplo_mysqlshow

myisamchk

La prestación myisamchk está diseñada para comprobar y reparar las tablas de datos usando el formato de tabla predeterminado MYISAM que acepta originariamente MySQL. Normalmente, myisamchk debería ejecutarse como usuario mysql creado por el directorio en el que residen las tablas en el momento de la instalación. Con el fin de comprobar una base de datos, su mysql, se convierte en el nombre del directorio que se corresponde con el nombre de la base de datos, y ejecuta myisamchk con una o más opciones que aparecen en la siguiente tabla. Por ejemplo,

myisamchk_ejemplo

Las opciones más comunes para myisamchk son:

myisamchk_tabla

Si deseamos obtener más información, puede invocar a myisamchk sin parámetros y puede echar un vistazo a los extensos mensajes de ayuda. Esta prestación no tiene efecto alguno en las tablas de tipo InnoDB.

mysql

Esta es la herramienta de línea más potente e importante. Casi todas las tareas administrativas o de usuario se pueden realizar aquí de alguna u otra manera. Podemos iniciar mysql desde la línea de comandos (como ya hicimos anteriormente), añadiendo un parámetro final, un nombre de base de datos, puede evitar el comando use <database> desde el monitor. Por ejemplo para iniciar el monitor como usuario rick, solicite una contraseña (tengamos en cuenta el espacio tras -p) y use foo de la base de datos:

mysql_1 NOTA: En teoría aún no tenemos ninguna base de datos creada por lo que nos dará el error de base de datos desconocida ‘foo’

mysql_error

Podemos ver más ayuda usando el comando:

mysql --help | less

mysql_help_less

Si inicia MySQL sin especificar una base de datos, puede usar la opción use <database> dentro de MySQL para seleccionar una, tal como puede ver en la lista de comandos de la siguiente tabla:

mysql_tabla

Un comando muy importante es use. El servidor mysql acepta la idea de tener diferentes bases de datos, todas gestionadas y atendidas por el mismo proceso de servidor. Muchos otros servidores de base de datos, como Oracle y Sybase, usan la terminología esquema (schema), mientras que MySQL usa más frecuentemente base de datos (database). (Por ejemplo, MySQL Query Browser usa esquema.) Cada base de datos es un conjunto independiente de tablas (según terminología de MySQL). Esto permite configurar diferentes bases de datos para diferentes finalidades, y asignar diferentes usuarios a diferentes bases de datos, usando para todo ello el mismo servidor de base de datos para gestionarlas eficientemente. Mediante el comando use, puede, si dispone de los permisos adecuados, cambiar de una base de datos a otra.

mysqladmin

Esta prestación es la herramienta principal para una administración rápida de la base de datos MySQL. Además de los parámetros comunes, los principales comandos que acepta son los mostrados en la tabla de abajo:

mysqladmin_tabla

Llame a mysqladmin sin ningún parámetro para ver la lista de opciones completa del incitador de comandos. Es posible que quiera usar | less.

mysqladmin_help

mysqlbug

Por suerte no tendremos que usarlo nunca. Esta herramienta crea un informe de errores que se enviará mediante correo electrónico a los encargados del mantenimiento de MySQL. Antes de enviarlo, es posible que quiera editar el archivo generado para proporcionar información adicional que les puede ser de gran utilidad a los desarrolladores.

mysqlbug

mysqldump

Se trata de una herramienta extremadamente útil que le permite volcar toda una base de datos o parte de la misma a un archivo único a modo de conjunto de comandos SQL que se pueden volver a leer con MySQL o incluso con otro SQL RDBMS. Adopta el usuario estándar y la información de contraseña, así como el nombre de la contraseña y de las tablas a modo de parámetro. Las opciones adicionales que vemos en la tabla de abajo, aumentan enormemente su capacidad:

mysqldump_tabla

Por defecto, mysqldump envía sus datos a la salida estándar, de manera que hay que redireccionarlo a un archivo.

Esta prestación es útil para emigrar datos o realizar copias de seguridad rápidas, y gracias a la implementación del servidor por parte del cliente de MySQL se puede usar incluso, a través de un cliente mysqldump instalado en otro ordenador, como una copia de seguridad remota. Como ejemplo, le presentamos un comando para conectarse como rick, y vaciar la base de datos children:

ejemplo_rick

El archivo resultante, que en su sistema tiene una única tabla en la base de datos, tiene esta apariencia:

mysqldump_salida

 mysqlimport

Este comando se usa para cargar muchos datos en una tabla. Usando mysqlimport, puede leer grandes cantidades de datos textuales en un archivo de entrada. Los únicos parámetros específicos de comandos necesarios son un nombre de archivo y una base de datos. mysqlimport cargará los datos en una tabla con el mismo nombre que el archivo (sin incluir la extensión del archivo) de la base de datos. Debe comprobar que el archivo de texto tiene el mismo número de columnas de datos que la tabla que se ha de completar con dichos datos, y que los tipos de datos son compatibles. Por defecto, los datos han de separarse con un tabulador a modo de delimitación.

También es posible ejecutar comandos SQL a partir de un archivo de texto, mediante la sencilla ejecución de mysql con las entradas redireccionada de un archivo, tal como mencionamos previamente.

mysqlshow

Esta pequeña prestación puede proporcionar información rápida sobre su instalación MySQL y sobre los componentes de su base de datos:

  • Sin parámetros, enumera todas las bases de datos disponibles.
  • Con una base de datos a modo de parámetro, enumera las tablas de dicha base de datos.
  • Con un nombre de una base de datos y un nombre de una tabla, enumera las columnas de la tabla.
  • Con una base de datos, una tabla y una columna, enumera los detalles de la columna especificada.

 Crear usuarios y proporcionarles diferentes permisos

Como administrador de MySQL, una de sus principales tareas será la del mantenimiento de los usuarios, creando y eliminando usuarios de MySQL y gestionando sus privilegios. Desde MySQL 3.22 , los permisos de usuario se gestionan mediante los comandos grant y revoke desde el monitor MySQL, una tarea realmente menos desmoralizador que editar las tablas de privilegios directamente, tal como se hacía con las primera versiones de MySQL.

grant

El comando MySQL grant sigue de cerca, aunque no literalmente, la sintaxis SQL92. l formato general es:

grant <privilege> on <object> to <user> [identified by user-password] [with grant option];

Podemos garantizar diferentes privilegios que vemos en la tabla de abajo:

grant_tabla

 Algunos comandos tienen otras opciones. Por ejemplo, create view le proporciona al usuario permisos para crear vistas. Para ver una lista completa de los permisos consulte la documentación MySQL correspondiente a su versión, ya que se trata de un área que se expande con cada nueva versión de MySQL.

El objeto en el cual se garantizan estos privilegios es identificado como:

databaseneme.tablename

y en Linux, * es el operador, de manera que *.* significa todos los objetos de todas las bases de datos, y foo.* significa todas las tablas de la base de datos foo.

Si el usuario especificado ya existe, se modificaran los privilegios para reflejar sus cambios. Si no existe dicho usuario, se creará con los privilegios especificados. Tal como vimos previamente, se puede especificar que los usuarios, estén en un ordenador central en particular. Debería especificar el usuario y el ordenador en el mismo comando para obtener todas las opciones del esquema de permisos que ofrece MySQL.

Tenemos en la sintaxis de SQL, el carácter especial % que sirve de carácter comodín, al igual que * en el entorno shell. Puede, por supuesto, generar comandos independientes para cada conjunto de privilegios deseado, pero si deseamos garantizar, por ejemplo, el acceso del usuario rick desde cualquier ordenador central con el dominio wilry.com, podría describir a rick de esta manera:

rick@'%.wiley.com'

Siempre que use el carácter comodín %, debe aparecer entre comillas para diferenciarlo del texto literal.

También se puede usar una notación IP/Máscara de red (N.N.N.N/M.M.M.M) para configurar una dirección de red para el control de acceso.

Al igual que previamente usó rick@'192.168.0.0/255.255.255.0' para garantizar el acceso a rick desde cualquier ordenador en red local, puede especificar…

rick@'192.168.0.1'

para limitar el acceso de rick a una única estación de trabajo, o especificar

rick@'192.0.0.0/255.0.0.0'

para aumentar el ámbito, incluyendo cualquier ordenador de la clase 192 red A.

 El comando

GRANT_1

creará un usuario rick, con permisos totales en la base de datos foo, para conectarse desde cualquier ordenador con una contraseña inicial de bar.

GRANT_1_bis

Si la base de datos foo no existiera todavía, el usuario rick podrá crearla usando el comando SQL. create database.

identified

 Si se da la situación de que existen nombres de usuario, nombre de host, o nombres de bases de datos que contenga guiones bajos (_), tiene que extremar las precauciones, ya que este carácter en SQL es un patrón que se corresponde con todo carácter único del mismo modo que % se corresponde con una cadena de caracteres.  Siempre que sea posible, no use el guión bajo en los nombres de usuario y de base de datos.

Normalmente, with grant option se usa solo para crear un segundo usuario administrador, sin embargo,  se puede usar para permitir que un usuario creado recientemente conceda los privilegios, que le fueron garantizados, a otros usuarios. Use with grant option con mucho juicio.

 revoke

Este comando hace todo lo contrario que grant, su sintaxis es:

revoke <a_privilege> on <an_object> from a:user>

que usa el mismo formato que el comando grant. Por ejemplol:

revoke_1

Pero el comando revoke, por el contrario, no elimina al usuario. Si desea eliminar a un usuario por completo, no modifique sus privilegios sin más, que es lo que está haciendo revoke. Después puede eliminarlo de la tabla de usuarios. Cambie a la base de datos mysql interna, y elimine las filas correspondientes de la tabla de usuarios:

REVOKE_2

Al no especificar ningún host, asegura que se deshace de cualquier ejemplo del usuario MySQL, en este caso rick, que era el usuario que queríamos eliminar. Tras conseguirlo, compruebe que vuelve a su propia base de datos (usando el comando use) o seguirá trabajando por error en la base de datos interna de MySQL.

nota_revoke

Contraseñas

 Si desea configurar una contraseña para los usuarios existentes que no disponen de una, o si desea modificar su propia contraseña o la de otra persona, tendrá que conectarse al servidor MySQL como el usuario raíz y actualizar directamente la información de usuario. Por ejemplo:

select_password

Si deseamos asignar la contraseña al usuario foo, podemos hacerlo de esta manera:

cambio_password

Creando una base de datos

El siguiente paso es crear una base de datos. Crearemos una llamada rick para seguir con los demás ejemplos. No olvide que ya hemos creado un usuario con el mismo nombre. Primero le concederá al usuario rick todos los permisos, para que pueda crear nuevas bases de datos. En un sistema de desarrollo esto resulta útil, porque le permite a la gente una mayor flexibilidad.

creacion:basedatos_1

Ahora vamos a comprobar el privilegio configurado como rick y creando la base de datos:

crear_basedatos_2

Ahora indicaremos a MySQL que desea cambiar a su nueva base de datos:

database_3

Ahora ya podemos completar la base de datos con tablas y la información deseada. La próxima vez que se registre, podrá especificar la base de datos al final de la línea de comando, evitando la necesidad de usar use:

Tipos de datos

Ya hemos ejecutado el servidor MySQL, hemos creado un registro seguro para el usuario, y una base de datos lista para ser usada. ¿Y ahora que? Ahora tenemos que crear algunas tablas con columnas para almacenar los datos. Sin embargo, antes de empezar, tenemos que conocer los tipos de datos que acepta MySQL.

Léase el manual de MySQL de su sitio web para ver más detalles.

Booleanos

Una columna booleana se puede definir usando la palabra clave BOOL. Como es de esperar solo tiene dos opciones TRUE o FALSE. También puede contener un valor especial (desconocido) de base de datos NULL.

Carácter

Existen varios tipos de caracteres, que vemos en la tabla de abajo. Los tres primeros caracteres son estándar y los otros dos son específicos cd MySQL.

tipodatos_caracter

Números

Los tipos numéricos se dividen en enteros y decimales, tal como vemos en la siguiente tabla:

tipodatos_numeros

Tipos fecha

Hay 5 tipos de datos tal como vemos en la siguiente tabla:

tipodatos_fecha

atras2

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s