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
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.
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
|
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
|
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.

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 |
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 |
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.
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.
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:
+-------------------------+----------+------------------+--------------+
|
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.
+-------------------------+----------+------------------+--------------+
|
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™
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
|
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
|
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.
Alcance Libre
http://www.alcancelibre.org/staticpages/index.php/como-mysql-quickstart