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