Está en la página 1de 4

COMO CONFIGURAR MYSQL

Introducción.
MySQL™ es actualmente el servidor de base de datos más popular para los desarrollos web.
Es muy rápido y sólido, son muchos los administradores que lo instalan, y sin embargo no
tantos los que lo configuran correctamente, o que siquera saben que hay que configurarlo.
Este manual es solo una referencia rápida para el procedimiento de instalación y
configuración de un servidor MySQL™. La generación de tablas y el ingreso de datos dentro
de los campos de éstas puede hacerse a través de mandatos SQL en el Shell de MySQL™,
utilizando un fichero .sql (como en es caso de PHP NUKE y otras aplicaciones web) o bien
utilizando clientes MySQL™, como son MySQLGUI, GtkSQL o Gmysql.

Procedimientos.
MySQL™ es incluido actualmente en la mayoría de las distribuciones de GNU/Linux de hoy en
día, por lo que no habrá problema alguno en conseguir los binarios necesarios y propios de la
distribución que se utilice. Bastará con instalar los incluidos en el CD de instalación o bien los
disponibles entre los paquetes de actualización para la distribución que se utilice.
Pregunte al sistema si se encuentran instalados los paquetes que componen MySQL™:
rpm -q mysql mysql-server
De no estar instalados, o bien si hay paquetes más recientes entre las actualizaciones
disponibles, cambie a súper usuario o bien ingrese como root al sistema. Si utiliza Red Hat™
Enterprise Linux, procederemos a instalar lo necesario del siguiente modo:
up2date -i mysql mysql-server
Si utiliza White Box Enterprise Linux o bien otros clones de Red Hat™ Enterprise Linux, se
ejecutar lo siguiente:
yum -y install mysql mysql-server
Lo anterior descargará las más recientes actualizaciones de seguridad de MySQL™ para
Fedora™ Core, junto con todo lo que haga falta para satisfacer todas las dependencias de
biblotecas y otro software.
Si utiliza Red Hat™, CentOS o White Box Enterprise Linux 4.0, ejecute system-config-
securitylevel (mod gráfico), vaya a la pestaña de SELinux y en la sección de SELinux Service
Protection habilite la casilla que dice Disable SELInux protection for mysqld daemon. De otro
modo MySQL no podrá siquiera iniciar.
Desactivar protección de SELinux para mysqld.
La manera más apropiada de iniciar el servicio mysqld será ejecutado el siguiente mandato:
/sbin/service mysqld start
Procederemos a agregar a MySQL™ al los niveles de corrida 3, 4 y 5, de modo que la
siguiente vez que se tenga que iniciar el equipo, MySQL™ se encuentre habilitado.
/sbin/chkconfig --level 345 mysqld on
Después de iniciado MySQL™ por primera vez, como root ejecute el mandato mysql:
# mysql
Esto nos ingresará directamente y sin mayor preámbulo al Shell de MySQL™, donde lo
primero será asignar una contraseña cifrada al usuario root, ya que no es conveniente, de
manera alguna y sin pretexto, dejar MySQL™ de este modo.
Primero indicaremos que base de datos utilizar, en este caso será la principal y única
existente, mysql:
> use mysql
Ahora haremos petición para que se muestren las tablas:
> show tables;
Procederemos hacer una petición para que se muestre el contenido de la tabla user:
> 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á ver, el usuario root no tiene asignada una contraseña, por lo que cualquiera
que se identifique como root tendrá acceso. Asignaremos una contraseña del siguiente modo
(sea cuidadoso con lo que teclea como contraseña):
> update user set Password=PASSWORD('nuevo_password') where
user='root';
Ejecute de nuevo el siguiente mandato:
> select * from user;
Notará que ahora hay un criptograma en el campo que corresponde a la contraseña de root.
+-------------------------+----------+------------------
+--------------+
| Host | User |
Password | Select_priv |
+-------------------------+----------+------------------
+--------------+
| localhost | root |
4593274b8e0d68j852| Y |
+-------------------------+----------+------------------
+--------------+
Refresquemos los privilegios a fin de que tomen efecto los cambios.
> flush privileges
Salgamos ahora a fin de regresar y poder probar la nueva contraseña.
> quit
Ingrese de nuevo al Shell 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 contraseña (-p):
mysql -u root -p
A continuación se le pedirá ingrese una contraseña, tras lo cual obtendrá de nuevo acceso al
Shell 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
En seguida acceda al Shell de MySQL™ y ejecute lo siguiente, suponiendo que se desea
asignar permisos sobre las tablas de la base de datos directorio al usuario jbarrios del equipo
local:
GRANT select, insert, update, create, alter, delete, drop ON
directorio.* TO jbarrios@localhost IDENTIFIED BY
'password_del_usuario_jbarrios';
Al concluir, usted tendrá una base de datos "jbarrios" que podrá ser utilizada y modificada
por el usuario jbarrios desde el servidor donde se encuentra instalada la base de datos, es
decir, localhost. Esto establecerá un nivel de seguridad apropiado, y garantizará que de ser
descifrada una contraseña de un usuario, está no podrá ser utilizada desde un equipo
remoto.
Si, por ejemplo, se requiere permitir el acceso a una base de datos jbarrios desde otro equipo
en la red local con fines administrativos, podemos otorgar el acceso al usuario jperez del
equipo que, según el DNS de la LAN, se denomina como maquina1.mi-red-local.org, es decir
jperez@maquina1.mi-red-local.org.
GRANT
select, insert, update, create, alter, delete, drop
ON
directorio.*
TO
jperez@maquina1.mi-red-local.org
IDENTIFIED BY
'password_del_usuario_jperez';

El muro corta-fuegos.
MySQL™ escucha peticiones en el puerto 3306, tanto para TCP como para UDP. Puede
implementar un Firewall o muro muro corta-fuegos que cierre dicho puerto, de modo tal que
solo se puede acceder a MySQL™ desde la red local. Las siguientes líneas de ejemplo
suponen que el servidor donde se encuentra instalado MySQL™ posee dos interfaces de red,
eth0 y eth1, de las cuales la primera (eth0) corresponde a la interfaz de acceso hacia la red
local y la segunda (eth1) corresponde a la interfaz de acceso hacia la red mundial.
# MySQL™
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306
-i eht1 -j DROP
/sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306
-i eth1 -j DROP
Si se requiere acceder remotamente hacia MySQL™ desde fuera de la red local, con fines
meramente de administración, como sería algunos casos particulares, se requerirá añadir
las siguientes líneas en el guión de Firewall o muro muro corta-fuegos a fin de abrir los
puertos correspondientes.
# MySQL™
/sbin/iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 3306
-j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp -s 0/0 -d 0/0 --dport 3306
-j ACCEPT

También podría gustarte