|
MySQL
En esta lección vamos a hacer un pequeño recorrido por MySQL, por su
estructura y forma de trabajar. Para ello suponemos que ya hemos
conseguido (por fin...) instalar MySQL en nuestra máquina.
Lo primiero que debemos hacer es arrancar MySQL (ver capitulo de
instalación):
- Linux: ./mysqld start
- Windows: mysqld-shareware.exe
Todo el sistema de permisos de acceso al servidor, a las bases de datos
y sus tablas, MySQL lo almacena en una tabla llamada mysql,
que como todas estará en el directorio /data, a menos que hallamos
especificado otro directorio.
En Windows esta tabla se crea con la instalación, pero en Linux/Unix
debemos crearla con:
/usr/local/mysql/bin/mysql_install_db
En la base de datos mysql es donde se guadaran todos
los permisos y restricciones a los datos de nuestras bases de datos. La
principal herramienta de MySQL es mysqladmin,
la cuál como parece indicar su nombre es la encargada de la
administración.
MySQL crea por defecto al usuario root con todos los perimsos posibles
habilitados, podemos utilizar este usuario como administrador o crear
otro, por ejemplo mysqladmi. Como el usuario root lo crea sin clave de
acceso, lo primero que debemos hacer es asignarle una:
mysqladmin -u root password "miclave"
A partir de ahora cualquier operación que hagamos como root deberemos
especifica la clave. Hay que destacar que enter el modificador -p y la
clave no debe haber espacios.
mysqladmin -u root -pmiclave
Pues bien, ya estamos preparado para crear una base de datos
mysqladmin -u root -pmiclave create mibasededatos
Para borrarla
mysqladmin -u root -pmiclave drop mibasededatos
La estructura de MySQL
En el directorio /benc encontraremos ejemplos de script y SQL. En el
directoio /share están los mensajes de error del servidor para los
distinos idiomas. Los directorios /include y /lib contiene los fichero *.h
y las librerias necesarias, en /bin estan los ficheros ejecutables y en
/data encontraremos como subdirectorio cada una de las bases de datos que
hayamos creado.
Como hemos dicho, para cada base de datos que nostros creamos, MySQL crea un directorio
con el nombre que le hemos asignado a la bade de datos. Dentro de este
directorio, por cada tabla que definamos MySQL va ha crear tres archivos: mitabla.ISD,
mitabla.ISM, mitabla.frm
El archivo con extensión ISD, es el contine los datos de
nuestra tabla, el ISM contiene información acerca de las claves y
otro datos que MySQL utiliza para buscar datos en el fichero ISD. Y
el archivo frm contine la estructura de la propia tabla.
Dado que las bases de datos de MySQL son simples ficheros de un
directorio, para realizar copias de seguridad, podremos utilizar las
herramientas de compresión que habitualmente usamos en nuestro sistema y
luego copiarlo a otro lugar, o simplemente esto último.
Seguridad
Como comentamos anteriormente, todo el sistema de permisos MySQL lo
guarda en una base de datos llamada mysql,
la cuál se componen de cinco tablas: host, user, db, tables_priv,
colums_priv.
La tabla user contiene información sobre los usuarios, desde
que máquinas pueden acceder a nuestro servidor MySQL, su clave y de sus
diferentes permisos. La tabla host nos informa sobre que máquinas podran
acceder a nuestro sistema, así como a las bases de datos que tendrán
acesso y sus diferentes permisos. Finalmente, las tablas db,
tables_priv, columns_priv nos proveen de un control individual de las
bases de datos, tablas y columnas (campos).
Tabla user
| CAMPO |
TIPO |
POR DEFECTO |
| Host |
char(60) |
|
| User |
char(16) |
|
| Password |
char(16) |
|
| Select_priv |
enum('N','Y') |
N |
| Insert_priv |
enum('N','Y') |
N |
| Update_priv |
enum('N','Y') |
N |
| Delete_priv |
enum('N','Y') |
N |
| Create_priv |
enum('N','Y') |
N |
| Drop_priv |
enum('N','Y') |
N |
| Reload_priv |
enum('N','Y') |
N |
| Shutdown_priv |
enum('N','Y') |
N |
| Process_priv |
enum('N','Y') |
N |
| File_priv |
enum('N','Y') |
N |
| Grant_priv |
enum('N','Y') |
N |
| References_priv |
enum('N','Y') |
N |
| Index_priv |
enum('N','Y') |
N |
| Alter_priv |
enum('N','Y') |
N |
Tabla host
| CAMPO |
TIPO |
POR DEFECTO |
| Host |
char(60) |
|
| Db |
char(32) |
|
| Select_priv |
enum('N','Y') |
N |
| Insert_priv |
enum('N','Y') |
N |
| Update_priv |
enum('N','Y') |
N |
| Delete_priv |
enum('N','Y') |
N |
| Create_priv |
enum('N','Y') |
N |
| Drop_priv |
enum('N','Y') |
N |
| Grant_priv |
enum('N','Y') |
N |
| References_priv |
enum('N','Y') |
N |
| Index_priv |
enum('N','Y') |
N |
| Alter_priv |
enum('N','Y') |
N |
Tabla db
| CAMPO |
TIPO |
POR DEFECTO |
| Host |
char(60) |
|
| Db |
char(32) |
|
| User |
char(16) |
|
| Select_priv |
enum('N','Y') |
N |
| Insert_priv |
enum('N','Y') |
N |
| Update_priv |
enum('N','Y') |
N |
| Delete_priv |
enum('N','Y') |
N |
| Create_priv |
enum('N','Y') |
N |
| Drop_priv |
enum('N','Y') |
N |
| References_priv |
enum('N','Y') |
N |
| Index_priv |
enum('N','Y') |
N |
| Alter_priv |
enum('N','Y') |
N |
He aquí una breve descripción de los diferentes permisos:
- Select_priv: Permite utilizar la sentencia SELECT
- Insert_priv: Permite utilizar la sentencia INSERT
- Update_priv: Permite utilizar la sentencia UPDATE
- Delete_priv: Permite utilizar la sentencia DELETE
- Create_priv: Permite utilizar la sentencia CREATE o crear
bases de datos
- Drop_priv: Permite utilizar la sentencia DROP o eliminar
bases de datos
- Reload_priv: Permite recargar el sistema mediante mysqladmin
reload
- Shutdown_priv: Permite parar el servidor mediante mysqladmin
shutdown
- Process_priv: Permite manejar procesos del servidor
- File_priv: Permite leer y escribir ficheros usando comando
como SELECT INTO OUTFILE y LOAD DATA INFILE
- Grant_priv: Permite otorgar permisos a otros usuarios
- Index_priv: Permite crear o borrar índices
- Alter_priv: Permite utilizar la sentencia ALTER TABLE
Si dejamos en blanco los campos user, host o db,
haremos referencia a cualquier usario, servidor o base de datos.
Conseguiremos el mismo efecto poniendo el símbolo % en el campo.
|
|