¿Cómo instalar MySQL en CentOS 7?

Actualizado el 8 de septiembre, 2016. Por BlueHosting.

MySQL es un sistema de gestión de bases de datos usado para web y aplicaciones de servidor. Sin embargo, MySQL ya no está disponible en los repositorios más recientes de CentOS, así que MariaDB se ha convertido en la base de datos que ofrece esta distribución Linux de forma predeterminada. El sistema MariaDB es considerado un remplazo de MySQL y debería ser suficiente si lo que necesita es un sistema general de bases de datos. Puede visitar nuestro tutorial de instalación de MariaDB en CentOS 7 para más información e instrucciones. No obstante, si prefiere instalar MySQL, esta guía le ofrece las instrucciones para hacerlo usando los propios repositorios de MySQL. Al terminar tendrá el conocimiento para instalar, configurar y gestionar MySQL de forma básica en un servidor con CentOS 7.

Nota:
Esta guía está escrita para un usuario no root. Los comandos que requieren privilegios elevados están precedidos por sudo.

Antes de comenzar

  1. Asegúrese de seguir nuestra guía de seguridad Además será necesario que tenga establecido un hostname. Para verificar su hostname puede ejecutar:

    hostname  
    hostname -f
    

    El primer comando debería mostrar el hostname corto, y el segundo debería mostrar el nombre de dominio completamente calificado (o FQDN, por sus siglas en inglés).

  2. Actualice su sistema:

    sudo yum update
    

Instalar MySQL

Debido a que MySQL no está disponible por defecto, debe instalarse desde los repositorios de la comunidad de MySQL.

  1. En caso de no tener instalado el gestor de paquetes wget use primero:

    sudo yum install wget
    
  2. Luego descargue y agregue el repositorio, posteriormente actualice.

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum update
    

    Verifique los contenidos a actualizar y responda y (sí) si todo es correcto.

  3. Instale MySQL normalmente y arranque el servicio. Durante la instalación, se le preguntará si desea aceptar los resultados de la verificación GPG del archivo .rpm. Si no hay ningún error o discrepancia, ingrese y (sí).

    sudo yum install mysql-server
    sudo systemctl start mysqld
    

    Por defecto, MySQL se vinculará con el localhost (127.0.0.1). Existen otros métodos para acceder a sus bases de datos MySQL de forma remota pero no se abordan en este tutorial.

Nota:
No se aconseja permitir acceso sin restricciones a MySQL bajo una IP pública, pero puede cambiar la dirección en la que escucha MySQL modificando el parámetro bind-address en el archivo /etc/my.cnf. Si decide vincular MySQL a su IP pública, deberá implementar reglas de firewall que solo admitan conexiones desde direcciones IP específicas. Para más información sobre cómo configurar un firewall usando iptables visite nuestro tutorial: iptables.

Fortalecer su servidor MySQL

  1. Ejecute el script mysql_secure_installation para hacer frente a varios problemas de seguridad en una instalación predeterminada de MySQL.
    sudo mysql_secure_installation
    

    Si aún no ha establecido una contraseña para el usuario root, simplemente presione Enter en el siguiente mensaje:

    Enter current password for root (enter for none):
    

Se le dará la opción de cambiar su contraseña root de MySQL, eliminar cuentas de usuario anónimas, deshabilitar los inicios de sesión root fuera del localhost y eliminar bases de datos de prueba. Se recomienda contestar yes a todas estas opciones durante la instalación.

Usar MySQL

La herramienta estándar para el uso de MySQL es el cliente mysql que se instala con el paquete mysql-server. El cliente MySQL se utiliza a través de un terminal.

Inicio de sesión con usuario root

  1. Para iniciar sesión como usuario root:

    mysql -u root -p
    
  2. Cuando se le pida, ingrese la contraseña root que asignó al momento de ejecutar el script de instalación segura mysql_secure_installation.
    Podrá ver entonces que ingresó correctamente a la línea de comandos de MySQL:

    mysql>
    
  3. Para generar una lista de los comandos de MySQL, ejecute \h o help;. Podrá ver algo similar a lo siguiente:

    List of all MySQL commands:
    Note that all text commands must be first on line and end with ';'
    ?         (\?) Synonym for `help'.
    clear     (\c) Clear the current input statement.
    connect   (\r) Reconnect to the server. Optional arguments are db and host.
    delimiter (\d) Set statement delimiter.
    edit      (\e) Edit command with $EDITOR.
    ego       (\G) Send command to mysql server, display result vertically.
    exit      (\q) Exit mysql. Same as quit.
    go        (\g) Send command to mysql server.
    help      (\h) Display this help.
    nopager   (\n) Disable pager, print to stdout.
    notee     (\t) Don't write into outfile.
    pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
    print     (\p) Print current command.
    prompt    (\R) Change your mysql prompt.
    quit      (\q) Quit mysql.
    rehash    (\#) Rebuild completion hash.
    source    (\.) Execute an SQL script file. Takes a file name as an argument.
    status    (\s) Get status information from the server.
    system    (\!) Execute a system shell command.
    tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
    use       (\u) Use another database. Takes database name as argument.
    charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
    warnings  (\W) Show warnings after every statement.
    nowarning (\w) Don't show warnings after every statement.
    

Crear un nuevo usuario MySQL y una base de datos

  1. En el siguiente ejemplo, mibasededatos es el nombre de la base de datos, juanprueba es el nombre del usuario y MiContraseña es la contraseña correspondiente a ese usuario.

    create database mibasededatos;
    create user 'juanprueba'@'localhost' identified by 'MiContraseña';
    grant all on mibasededatos.* to 'juanprueba' identified by 'MiContraseña';
    

    Puede acortar este proceso creando el usuario mientras asigna los permisos de la base de datos:

    create database mibasededatos;
    grant all on mibasededatos.* to 'juanprueba' identified by 'MiContraseña';
    
  2. Luego salga de MySQL.

    exit
    

Crear una tabla de muestra

  1. Vuelva a ingresar a MySQL usando ahora el usuario juanprueba:

    mysql -u juanprueba -p
    
  2. Cree una tabla de muestra llamada empleados. Esto crea una tabla con un campo ID de tipo INT (número entero que va incrementando a medida que se añaden nuevos registros) usado como llave primaria, así como dos campos adicionales para almacenar el nombre del cliente:

    use mibasededatos;
    create table empleados (id_empleado INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nombre TEXT, apellido TEXT);
    
  3. Luego salga de MySQL:

    exit
    

Reiniciar la contraseña del usuario root de MySQL

Si usted olvida la contraseña del usuario root de MySQL, esta puede reiniciarse.

  1. Detenga la instancia actual del servidor MySQL y luego reiníciela especificando una opción que evita la solicitud de contraseña:

    sudo systemctl stop mysqld
    sudo mysqld_safe --skip-grant-tables &
    
  2. Vuelva a conectarse al servidor MySQL usando la cuenta root:

    mysql -u root
    
  3. Utilice los siguientes comandos para reiniciar la contraseña root. Remplace contraseña con una contraseña sólida y guárdela en un lugar seguro.

    use mysql;
    update user SET PASSWORD=PASSWORD("contraseña") WHERE USER='root';
    flush privileges;
    exit
    
  4. Finalmente debe reiniciar el servicio MySQL:

    sudo systemctl start mysqld
    

Optimizar MySQL

MySQL Tuner es un script en lenguaje Perl que se conecta a una instancia en ejecución de MySQL y proporciona recomendaciones de configuración con base en su carga de trabajo. Idealmente, la instancia MySQL debe tener al menos 24 horas de ejecución antes de ejecutar este optimizador. Mientras más tiempo tenga su instancia en ejecución, mejores los consejos que le dará MySQL Tuner.

  1. Descargue MySQL Tuner en su directorio principal:

    wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
    
  2. Para ejecutar el script ingrese lo siguiente:

    perl ./mysqltuner.pl
    

    Se le pedirá la contraseña del usuario root en su instalación de MySQL. La salida le mostrará dos áreas de interés: Recomendaciones generales y variables a ajustar.

MySQL es un excelente punto de partida para optimizar un servidor MySQL, pero sería prudente que investigue un poco más para adaptarse a su uso particular de MySQL en su servidor.

Recursos adicionales

Para complementar la información presentada en esta guía puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos certificar su actualidad o precisión.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...