Compilando MySQL para Linux
En este taller vamos a explicar los pasos a seguir para compilar MySQL en Linux y así poder usarlo con PHP.
- Nos ponemos como root para empezar a trabajar
- Creamos el grupo y usuario mysql
- Descargamos las fuentes de MySQL y las descomprimimos
- Preparamos las fuentes para ser compiladas
- Compilamos e instalamos las fuentes
- Instalamos la Base de Datos
- Asignamos los direcorios a sus respectivos propietarios
- Copiamos el archivo de configuración a /etc
- Probamos MySQL
Adquirimos permisos de root para no tener ningún problema
Obtenemos login como root con el comando su -l:
$ su -l Password: #
Notar que el signo $ ha cambiado por #. Si es así, habremos obtenido permisos de root, cosa que usaremos para tareas muy determinadas, ya que podemos dañar el sistema.
Añadimos el grupo mysql y creamos el usuario mysql dentro del grupo mysql:
# groupadd mysql # useradd -g mysql mysql
Bajamos las fuentes y las preparamos para compilarlas
Descargamos las fuentes en formato .tar.gz ( tarball ) de http://www.mysql.com/. (NOTA: son unos 11 Mb)
Descomprimimos las fuentes:
# gunzip mysql-3.x.x.tar.gz # tar -xvf mysql-3.x.x.tar
Preparamos las fuentes para compilarlas:
# cd mysql-3.x.x # ./configure --prefix=/usr/local/mysql
Si todo ha ido bien, estaremos en condiciones de compilar MySQL:
# make && make install && echo "Bien compilado e instalado"
Instalando las Bases de Datos
Si todo ha ido bien, deberemos ejecutar el script mysql_install_db:
# cd scripts # ./mysql_install_db
Si nada ha fallado, seguimos con la configuración. Ahora cambiamos los propietarios de los directorios
# chown -R root /usr/local/mysql # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql
Una vez habido entregado los directorios a sus propietarios, creamos el archivo de configuración:
# cd .. # cp support-files/my-medium.cnf /etc/my.cnf
Probamos el servidor:
# /usr/local/mysql/bin/safe_mysqld --user=mysql & Si no devuelve ningún error, entonces está todo bien.
Comprobamos la conexión con el servidor con el programa mysql:
# /usr/local/mysql/bin/mysql Si obtenemos la línea de comandos del servidor, entonces está todo correcto
Creamos
los enlaces a los clientes de MySQL:
# ln /usr/local/mysql/bin/mysql /usr/bin/mysql # ln /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
Añadiendo Usuarios al sistema MySQL
Si
has seguido todos los pasos hasta aquí, tendrás una BD llamada mysql que es en la que se administran todos los passwords y usuarios de MySQL, lo primero que haremos será cambiar la password del root ( que ahora está vacía ):
Cambiamos la password de root con el programa mysqladmin:
# mysqladmin -u root password nuevo_password
Ahora añadiremos algunos usuarios para ver como funciona este sistema:
Para añadir usuarios, usaremos el comando GRANT, que tiene esta sintaxis:
GRANT priv_type [(column list)]
[, priv_tipe[(column_lis)] ...]
ON {table_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY 'password']
[, user_name [IDENTIFIED BY 'password'] ...]
[WITH GRANT OPTION]
Bueno, puede parecer m ás difícil de lo que es en realidad, imaginemos que queremos crear un usuario llamado Pedro con todos los permisos sobre su base de datos llamada pedro_db, y que solo pueda conectar desde cualquier máquina de dominio.com pues haremos algo así:
# mysql -p Enter password: mysql> GRANT insert,select,update,delete,create,drop,alter ON pedro_db.* TO pedro@"%.dominio.com" IDENTIFIED BY 'p3dr0';
Una explicación de lo anterior, vamos a darle permiso
a hacer ( insert, select, update … ) sobre cualquier tabla de pedro_db
a un usuario llamado pedro que conectará desde cualquier máquina de dominio.com,
cuya password será p3dr0.
Ahora vamos a crear otro superusuario llamado ferdy que tendrá todos los
privilegios, y que podrá conectar desde cualquier sitio:
mysql> GRANT ALL PRIVILEGES ON *.* TO ferdy@"%" IDENTIFIED BY 'gh4limones25tf' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO ferdy@localhost IDENTIFIED BY 'gh4limones25tf' WITH GRANT OPTION;
Con esto tendremos a nuestro nuevo superusuario.
Supongamos por último que queremos borrar a Pedro, pues como los usuarios se guardan en la base de datos mysql en la tabla user:
mysql> use mysql; mysql> DELETE FROM user WHERE user = 'pedro'; Pedro habrá desaparecido de nuestro sistema MySQL. Y teniendo en cuenta que Ferdy no debería tener tantos permisos le quitaremos los permisos sobre la base de datos usuarios:
mysql> REVOKE ALL PRIVILEGES ON usuarios.* FROM ferdy; Y Ferdy no tendrá permisos sobre la base de datos usuarios. La sintaxis de REVOKE es:
REVOKE priv_type [(column_list)]
[, priv_type [(column_list)] ...]
ON {table_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]
Y esto es todo lo básico que necesitas saber para empezar a trabajar con MySQL sobre Linux
Si has llegado hasta aquí entonces todo ha ido bien. Sólo me queda recomendarte el tutorial de MySQL
Documento redactado por Ferdy gracias a Herminio Heredia Santos para Maestros del Web.
Fernando José Pereda Garcimartín para