Cómo instalar y configurar MySQL™.

Fuente: http://www.alcancelibre.org/staticpages/index.php/como-mysql-quickstart

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2007 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos. Esta licencia deberá aparecer como primer texto del documento distribuido

Introducción.

Acerca de MySQL™.

MySQL™ es un DBMS (DataBase 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.

URL: http://www.mysql.com/

Equipamiento lógico necesario.

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 o versiones posteriores de estos sistemas operativos, active la política mysqld_disable_trans con el mandato setsebool para permitir funcionar al servicio mysqld. De otro modo, el servicio mysqld jamás podrá iniciar.

setsebool -P mysqld_disable_trans 1

Para que SELinux permita utilizar el cliente mysql para establecer conexiones hacia servidores MySQL, utilice el siguiente mandato:

setsebool -P allow_user_mysql_connect 1

Iniciar, detener y reiniciar el servicio mysqld.

Para iniciar por primera vez el servicio mysqld y generar la base de datos inicial (mysql), utilice:

/sbin/service mysqld start

Para reiniciar el servicio mysqld, utilice:

/sbin/service mysqld restart

Para detener el servicio mysqld, utilice:

/sbin/service mysqld stop

Agregar el servicio mysqld al arranque del sistema.

Para hacer que el servicio de mysqld esté activo con el siguiente inicio del sistema, en todos los niveles de corrida (2, 3, 4, y 5), se utiliza lo siguiente:

/sbin/chkconfig mysqld on

Asignación de clave de acceso al usuario root.

El usuario root en MySQL%trade;, no tiene asignada clave de acceso alguna después de iniciado el servicio por primera vez. Por razones de seguridad, es muy importante asignar una clave de acceso.

Método corto.

La forma más simple de asignar una clave de acceso al usuario root de MySQL™ solo requiere de un único mandato, descrito a continuación.

mysqladmin -u root password nueva-clave-de-acceso

En adelante, 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, de esta forma, realizar diversas tareas administrativas.

Método largo.

La forma complicada de realizar lo anterior se describe solo con fines didácticos y como prueba de concepto. No es del todo práctico realizar asignación de la clave de acceso del usuario root con este método, pero sirve para entender el funcionamiento en cuanto a asignación de claves de acceso.

Como root, utilice el mandato mysql:

# mysql

Dentro del intérprete de mandatos de MySQL, indique con el mandato use mysql que utilizará única base de datos existente, mysql:

> use mysql

Solicite con el mandato show tables que se muestren las tablas de la base de datos mysql:

> show tables;

Con el mandato select * from user se mostrará el contenido de la tabla user de la base de datos actual:

> select * from user;

Esto hará que se vea, entre otras muchas cosas, lo siguiente:

+-------------------------+----------+------------------+--------------+
| Host                    | User     | Password         | Select_priv  |
+-------------------------+----------+------------------+--------------+
| localhost               | root     |                  | Y            |
+-------------------------+----------+------------------+--------------+

Como se podrá observar, el usuario root no tiene asignada una clave de acceso, 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';

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;

Deberá aparecer ahora un criptograma en el campo que corresponde a la clave de acceso del usuario root.

+-------------------------+----------+------------------+--------------+
| Host                    | User     | Password         | Select_priv  |
+-------------------------+----------+------------------+--------------+
| localhost               | root     |4593274b8e0d68j852| Y            |
+-------------------------+----------+------------------+--------------+

Se recomienda realizar refresco de los privilegios a fin de que tomen efecto los cambios.

> flush privileges

Para probar, solo hay que salir del intérprete de MySQL.

> quit

Intente ingresar de nuevamente al intérprete de mandatos de MySQL™:

mysql

Notará que ya no se puede acceder como antes, y regresa un mensaje de error.

ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

Ejecute ahora el mismo mandato, 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, tras lo cual obtendrá de nuevo acceso al intérprete de mandatos de MySQL™

Creando y destruyendo bases de datos.

Para crear una nueva base de datos, puede utilizarse el mandato mysqladmin con el parámetro create:

mysqladmin -u root -p create dbejemplo

Si queremos eliminar dicha base de datos, utilizamos el parámetro drop en lugar de create.

mysqladmin -u root -p drop dbejemplo

Otorgando permisos a los usuarios.

En adelante el usuario root solo se utilizará para tareas administrativas y creación de nuevas bases de datos. Resultará conveniente delegar a los usuarios ordinarios el manejo de sus propias bases de datos.

Una vez generada una base de datos, debemos determinar con que usuario y desde que equipo en la red local, se podrá tener acceso, así como los privilegios para modificar esta. Lo más común, y seguro, es asignar el acceso solo desde el mismo servidor (localhost), a menos que el desarrollo web o aplicación se localice en otro equipo.

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, suponiendo que se desea asignar permisos select (seleccionar), insert (insertar), update (actualizar), create (crear), alter (aldetar), 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, insert, update, create, alter, delete, drop ON directorio.* TO prueba@localhost IDENTIFIED BY 'password_del_usuario_prueba';

Al concluir, se tendrá una base de datos denominada directorio que podrá ser utilizada y modificada por el usuario prueba desde el anfitrión localhost. Esto establecerá un nivel de seguridad apropiado, y garantizará que de verse comprometida la seguridad, la clave de acceso de un usuario no podrá ser utilizada desde un sistema remoto.

Si, por mencionar un ejemplo, se requiere permitir el acceso hacia la base de datos directorio desde otro equipo en la red local, con fines administrativos, se puede otorgar el acceso y permisos al usuario jperez desde el anfitrión 192.168.1.253, es decir jperez@192.168.1.253.

GRANT
select, insert, update, create, alter, delete, drop
ON
directorio.*
TO
jperez@192.168.1.253
IDENTIFIED BY
'clave_de_acceso_para_jperez';

Modificaciones necesarias en el muro cortafuegos.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 3306 por TCP (mysql).

Las reglas para el fichero /etc/shorewall/rules de Shorewall en un sistema con una zona (net), correspondería a lo siguiente:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	net	fw	tcp	3306
#LAST LINE -- 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), donde solo se va a permitir el acceso al servicio mysqld desde la red local, correspondería a lo siguiente:

#ACTION	SOURCE	DEST	PROTO 	DEST		SOURCE
#				PORT		PORT(S)1
ACCEPT	loc	fw	tcp	3306
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

Más documentos del mismo autor (Joel Barrios) en este enlace.

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

A %d blogueros les gusta esto: