You are on page 1of 5

Cómo instalar y configurar MySQL™

Introducción.
Acerca de MySQL™.
MySQL™ es un DBMS (bataBase Management System) o sistema de gestión de base de datos SQL
(Structured Query Language o Lenguaje Estructurado de Consulta) multiusuario y multihilo con
licencia GNU/GPL.
MySQL™ es propiedad y patrocinio de MySQL AB, compañía fundada por David Axmark, Allan
Larsson y Michael Widenius, con base de operaciones en Suecia, la cual posee los derechos de autor de
casi todo el código que lo integra. MySQL AB desarrolla y mantiene el sistema vendiendo servicios de
soporte y otros valores agregados, así como licenciamiento propietario para los desarrollos de
equipamiento lógico que requieren mantener cerrado su código.
MySQL™ es actualmente el servidor de base de datos más popular para los desarrollos a través de la
red mundial, con una estimación de más de diez millones de instalaciones. Es muy rápido y sólido.
Instalación a través de yum.
Si utiliza CentOS 4 o White Box Enterprise Linux 4, solo se necesita realizar lo siguiente para
instalar o actualizar el equipamiento lógico necesario:
yum -y install mysql mysql-server
Instalación a través de up2date.
Si se utiliza Red Hat™ Enterprise Linux 4, solo bastará realizar lo siguiente para instalar o actualizar
el equipamiento lógico necesario:
up2date -i mysql mysql-server

Procedimientos.
SELinux y el servicio mysqld
Si utiliza CentOS 4, Red Hat™ Enterprise Linux 4 o White Box Enterprise Linux 4, utilice la
herramienta system-config-securitylevel (desde el modo gráfico), seleccione la pestaña de SELinux, y
habilite la casilla con la leyenda Disable SELInux protection for mysqld daemon en la sección de
SELinux Service Protection. De otro modo, el servicio mysqld no podrá iniciar.
Desactivar protección de SELinux para mysqld.

La forma complicada de realizar lo anterior se describe solo con fines didácticos y como prueba de concepto. se utiliza lo siguiente: /sbin/chkconfig mysqld on Asignación de clave de acceso al usuario root. y 5). indique con el mandato use mysql que utilizará única base de datos existente. realizar diversas tareas administrativas. descrito a continuación. mysqladmin -u root password nueva-clave-de-acceso En adelante. detener y reiniciar el servicio mysqld. Por razones de seguridad. 4. La forma más simple de asignar una clave de acceso al usuario root de MySQL™ solo requiere de un único mandato. No es del todo práctico realizar asignación de la clave de acceso del usuario root con este método. utilice: /sbin/service mysqld stop Agregar el servicio mysqld al arranque del sistema. pero sirve para entender el funcionamiento en cuanto a asignación de claves de acceso. El usuario root en MySQL%trade..Iniciar. utilice: /sbin/service mysqld restart Para detener el servicio mysqld. Para iniciar por primera vez el servicio mysqld y generar la base de datos inicial (mysql). de esta forma. en todos los niveles de corrida (2. Para hacer que el servicio de mysqld esté activo con el siguiente inicio del sistema. Método corto. Método largo. 3. mysql: . será necesario añadir la opción -p a cualquier sentencia de línea de mandatos para. mysqladmin y mysqldump para ingresar la clave de acceso del usuario root y poder. es muy importante asignar una clave de acceso. no tiene asignada clave de acceso alguna después de iniciado el servicio por primera vez. utilice el mandato mysql: # mysql Dentro del intérprete de mandatos de MySQL. utilice: /sbin/service mysqld start Para reiniciar el servicio mysqld. Como root.

> quit . entre otras muchas cosas. Deberá aparecer ahora un criptograma en el campo que corresponde a la clave de acceso del usuario root. el usuario root no tiene asignada una clave de acceso. Utilice de nuevo el mandato select * from user y vuelva observar el campo que correspondería al de la clave de acceso del usuario root: > select * from user. solo hay que salir del intérprete de MySQL. Esto hará que se vea. lo siguiente: +-------------------------+----------+------------------+--------------+ | Host | User | Password | Select_priv | +-------------------------+----------+------------------+--------------+ | localhost | root | | Y | +-------------------------+----------+------------------+--------------+ Como se podrá observar. > flush privileges Para probar. Con el mandato select * from user se mostrará el contenido de la tabla user de la base de datos actual: > select * from user.> use mysql Solicite con el mandato show tables que se muestren las tablas de la base de datos mysql: > show tables. +-------------------------+----------+------------------+--------------+ | Host | User | Password | Select_priv | +-------------------------+----------+------------------+--------------+ | localhost | root |4593274b8e0d68j852| Y | +-------------------------+----------+------------------+--------------+ Se recomienda realizar refresco de los privilegios a fin de que tomen efecto los cambios. por lo que cualquiera que se identifique como root en el sistema tendrá acceso a todo en MySQL. Se asignará una clave de acceso del siguiente modo: > update user set Password=PASSWORD('nuevo_password') where user='root'.

y seguro. mysqladmin -u root -p drop dbejemplo Otorgando permisos a los usuarios. insert (insertar). drop ON directorio. Resultará conveniente delegar a los usuarios ordinarios el manejo de sus propias bases de datos. create. y regresa un mensaje de error. suponiendo que se desea asignar permisos select (seleccionar). En adelante el usuario root solo se utilizará para tareas administrativas y creación de nuevas bases de datos. ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) Ejecute ahora el mismo mandato. tras lo cual obtendrá de nuevo acceso al intérprete de mandatos de MySQL™ Creando y destruyendo bases de datos. delete (eliminar) y drop (descartar) sobre las tablas de la base de datos directorio al usuario prueba desde el anfitrión localhost (equipo local): GRANT select. así como los privilegios para modificar esta. insert. Genere un base de datos denominada directorio: mysqladmin -u root -p create directorio Se accede hacia el intérprete de mandatos de MySQL™ y se utiliza lo siguiente. alter (aldetar). utilizamos el parámetro drop en lugar de create. update (actualizar). create (crear). Para crear una nueva base de datos. alter. Lo más común. puede utilizarse el mandato mysqladmin con el parámetro create: mysqladmin -u root -p create dbejemplo Si queremos eliminar dicha base de datos. es asignar el acceso solo desde el mismo servidor (localhost).* TO prueba@localhost IDENTIFIED BY 'password_del_usuario_prueba'. a menos que el desarrollo web o aplicación se localice en otro equipo. delete. update. . pero especificando un usuario (-u root) y solicitando se pregunte por una clave de acceso (-p): mysql -u root -p A continuación se le pedirá ingrese una clave de e acceso.Intente ingresar de nuevamente al intérprete de mandatos de MySQL™: #mysql Notará que ya no se puede acceder como antes. Una vez generada una base de datos. se podrá tener acceso. debemos determinar con que usuario y desde que equipo en la red local.

GRANT select. donde solo se va a permitir el acceso al servicio mysqld desde la red local. es decir jperez@192. la clave de acceso de un usuario no podrá ser utilizada desde un sistema remoto. con fines administrativos. se requiere permitir el acceso hacia la base de datos directorio desde otro equipo en la red local. se tendrá una base de datos denominada directorio que podrá ser utilizada y modificada por el usuario prueba desde el anfitrión localhost. correspondería a lo siguiente: #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT loc fw tcp 3306 #LAST LINE -. alter. y garantizará que de verse comprometida la seguridad.1. como por ejemplo Shorewall. update.1. Modificaciones necesarias en el muro cortafuegos. correspondería a lo siguiente: #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT net fw tcp 3306 #LAST LINE -.168.253 IDENTIFIED BY 'clave_de_acceso_para_jperez'. drop ON directorio.DO NOT REMOVE . Si se utiliza un cortafuegos con políticas estrictas.Al concluir. Las reglas para el fichero /etc/shorewall/rules de Shorewall en un sistema con una zona (net). Si. Esto establecerá un nivel de seguridad apropiado.ADD YOUR ENTRIES BEFORE THIS ONE -. se puede otorgar el acceso y permisos al usuario jperez desde el anfitrión 192.1.168. por mencionar un ejemplo. delete.ADD YOUR ENTRIES BEFORE THIS ONE -.DO NOT REMOVE Las reglas para el fichero /etc/shorewall/rules de Shorewall en un sistema con dos zonas (net y loc).168.253. create.* TO jperez@192. insert. es necesario abrir el puerto 3306 por TCP (mysql).253.