Cómo instalar y configurar el servidor MySQL en Windows

MySQL es el RDDBMS más utilizado en el mundo. En este artículo, lo guiaremos a través del proceso de instalación y configuración en Windows.

Introducción

mysql es el Sistema de gestión de bases de datos relacionales (RDBMS) más utilizado en el mundo y proporciona datos a alrededor de un tercio de las aplicaciones actuales.

MySQL utiliza un lenguaje de datos SQL estandarizado y funciona en muchos sistemas operativos con controladores que permiten a los desarrolladores conectarse con todos los lenguajes de programación populares.

Es un sistema de administración de base de datos confiable, gratuito y de código abierto utilizado por empresas como WordPress, Facebook, Twitter y YouTube, creado en 1995 y luego comprado por Sun Microsystems en 2008. Sun Microsystems luego fue adquirida por Oracle en 2010 , dejando MySQL en su propiedad.

En este artículo, descargaremos e instalaremos MySQL en Windows y validaremos su funcionamiento creando una base de datos simple con un par de tablas.

Cómo configurar MySQL

Windows (especialmente Windows 10) requiere un poco de trabajo. Para descargar la última versión de MySQL es necesario ingresar a la página web oficial y descargar la versión comunitaria. El instalador es bastante sencillo, pero puede encontrarse con varios problemas.

Si no tiene ningún problema, elija una contraseña y espere a que el procedimiento de instalación siga todos sus pasos.

Ahora, dependiendo del idioma con el que desee usar MySQL, deberá instalar un Conector que es básicamente un controlador específico para cada idioma. Por ejemplo, Conector/J es el controlador oficial de Java Database Connectivity (JDBC), mientras que Conector/Python es el conector oficial de Python.

Todos los conectores se pueden encontrar en la página Descargas de MySQL.

Usaremos un usuario root con la contraseña simplepassword. Muchas personas deciden dejar la contraseña en blanco para simplificar las cosas en su entorno de desarrollo.

Ahora que tenemos MySQL (con suerte) instalado en Windows, debe navegar a la carpeta de instalación bin, que probablemente sea algo similar a C:\Archivos de programa\MySQL\MySQL Server 8.0\bin en el comando línea:

1
> cd C:\Program files\MySQL\MySQL Server 8.0\bin

O agregue la carpeta bin a la variable de entorno de ruta yendo a Propiedades del sistema -> Variables de entorno -> Ruta y agregando una ruta a su carpeta bin:

set environment variable

Configuración de la base de datos {#configuración de la base de datos}

Crearemos una base de datos de ejemplo llamada “estudios” para ayudar a los estudiantes a realizar un seguimiento de sus Estudios de Licenciatura en Ciencias de la Computación. Crearemos dos tablas para empezar:

  1. exámenes: realiza un seguimiento de todos los exámenes que el estudiante ha aprobado o reprobado.
  2. cursos - contiene todos los cursos que el estudiante necesita aprobar para terminar sus estudios de licenciatura.

Nota: Las sentencias de MySQL terminan con un punto y coma (;)

Si ha agregado la carpeta bin de MySQL como una variable de entorno, puede usarla a través de la terminal simplemente llamando a mysql. Por supuesto, tenemos que proporcionar credenciales junto con el comando inicial:

1
> mysql -u root -p simplepassword

El indicador -u representa el nombre de usuario y el indicador -p representa la contraseña.

Al iniciar sesión, aparecerá MySQL Monitor:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 8.0.0-log MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ahora, ejecutemos el comando help y veamos qué podemos hacer:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.
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.
notee     (\t) Don't write into outfile.
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.
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.
resetconnection(\x) Clean session context.

For server side help, type 'help contents'

mysql>

Lo que realmente nos interesa es qué comandos podemos usar para manipular datos. Entonces podemos navegar a help <item> donde <item> puede ser: Gestión de cuentas, declaraciones compuestas, manipulación de datos, funciones, complementos, etc. Estamos interesados ​​en la manipulación de datos, ya que queremos Crear una tabla:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mysql> help Data Manipulation
You asked for help about help category: "Data Manipulation"
For more information, type 'help <item>', where <item> is one of the following
topics:
   CALL
   DELETE
   DO
   DUAL
   HANDLER
   INSERT
...

Puede leer más sobre esto llamando a help <item> nuevamente, pero generalmente son bastante sencillos.

Vamos a crear una base de datos llamada estudios:

1
mysql> create database studies;

Está creado, pero no estamos "en la base de datos" por defecto. Echemos un vistazo a todas las bases de datos que hemos creado actualmente en el servidor:

1
2
3
4
5
6
7
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| studies            |
+--------------------+
1 rows in set (0.00 sec)

Ahora, sigamos adelante y utilicemos la base de datos:

1
mysql> use studies;

Debería ver "Base de datos modificada" impresa después de ese comando si todo salió bien.

Echemos un vistazo a cómo se verá nuestra tabla cursos:


CourseID Nombre Semestre ESPB clave principal, int varchar int int


Nota: MySQL admite saltos de línea en la línea de comando y espera una línea que termina con ; para finalizar la declaración, por lo que puede escribir lo siguiente línea por línea, en lugar de todo a la vez.

1
2
3
4
5
6
CREATE TABLE courses (
    CourseID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(50) NOT NULL,
    Semester INT NOT NULL,
    ESPB INT NOT NULL
);

Esto crea una tabla llamada cursos con varias filas CourseID, Name, Semestre y ESPB. Cada uno de ellos tiene sus respectivos tipos de datos, como INT y VARCHAR. Todos ellos son NOT NULL, lo que significa que si intentamos ingresar un valor NULL, se lanza una excepción.

La columna ‘CourseID’ también está configurada para ser una ‘CLAVE PRIMARIA’, lo que significa que se utilizará como clave de identificación para los cursos. AUTO_INCREMENT significa que cada vez que agregamos un nuevo curso a la tabla, el CourseID se incrementará automáticamente en 1 para evitar ID duplicados.

Ahora, hagamos lo mismo con la tabla de exámenes:


ID CourseID YearTomado Período Calificación Puntos Final clave principal, int clave externa, int int varchar int float booleano


1
2
3
4
5
6
7
8
9
CREATE TABLE exams (
    ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    CourseID INT NOT NULL REFERENCES courses(CourseID),
    YearTaken INT DEFAULT NULL,
    Period VARCHAR(20) DEFAULT NULL,
    Grade INT NOT NULL,
    Points FLOAT NOT NULL,
    Final BOOLEAN NOT NULL
);

Aquí, estamos usando REFERENCIAS para definir una ID extranjera, que es solo una ID de otra tabla que debe coincidir con la ID de esta tabla. Dado que los exámenes pertenecen a un curso, cada examen debe tener un CourseID válido.

Estamos usando YearTaken en lugar de simplemente "Year" ya que "Year" es una palabra clave en SQL.

Completemos estas dos tablas con algunos datos para que tengamos algo con lo que trabajar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
INSERT INTO courses VALUES (2100, "Algorithms and Data Structures", 3, 6);
INSERT INTO courses VALUES (1520, "Linear Algebra and Analytic Geometry", 1, 7);
INSERT INTO courses VALUES (666, "Calculus 2", 4, 6);
INSERT INTO courses VALUES (782, "Methodology of Scientific Research", 8, 2);
INSERT INTO courses VALUES (1890, "Object-Oriented Programming", 4, 6);
INSERT INTO courses VALUES (220, "Programming 1", 1, 8);

INSERT INTO exams (CourseID, YearTaken, Period, Grade, Points, Final)
    VALUES (2100, 2018, "june", 9, 82, true);
INSERT INTO exams (CourseID, YearTaken, Period, Grade, Points, Final)
    VALUES (1520, 2017, "july", 5, 41, false);
INSERT INTO exams (CourseID, YearTaken, Period, Grade, Points, Final)
    VALUES (1520, 2017, "sept", 8, 71, true);
INSERT INTO exams (CourseID, Grade, Points, Final)
    VALUES (1890, 10, 100, true);
INSERT INTO exams (CourseID, Grade, Points, Final)
    VALUES (220, 8, 79, false);
INSERT INTO exams (CourseID, Grade, Points, Final)
    VALUES (220, 10, 92, true);

Ejecutar estos comandos debería dar como resultado:

1
Query OK, `n` rows affected (time_elapsed)

Echemos un vistazo a las tablas que tenemos ejecutando:

1
mysql> show tables;

Esto daría como resultado:

1
2
3
4
5
6
7
+-------------------+
| Tables_in_studies |
+-------------------+
| courses           |
| exams             |
+-------------------+
2 rows in set (0.00 sec)

Ahora, podemos llamar a varias consultas para estas tablas, como INSERT, ALTER, DELETE, SELECT, etc.

Mediante la ejecución:

1
select * from courses;

estamos pidiendo todo de la tabla cursos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
mysql> select * from courses;
+----------+--------------------------------------+----------+------+
| CourseID | Name                                 | Semester | ESPB |
+----------+--------------------------------------+----------+------+
|      220 | Programming 1                        |        1 |    8 |
|      666 | Calculus 2                           |        4 |    6 |
|      782 | Methodology of Scientific Research   |        8 |    2 |
|     1520 | Linear Algebra and Analytic Geometry |        1 |    7 |
|     1890 | Object-Oriented Programming          |        4 |    6 |
|     2100 | Algorithms and Data Structures       |        3 |    6 |
+----------+--------------------------------------+----------+------+
6 rows in set (0.00 sec)

¡Parece que nuestra base de datos funciona bien!

Problemas de instalación de Windows 10 {#problemas de instalación de Windows 10}

El instalador se inicia, pero luego se detiene solo. Posibles soluciones:

  • Abra el "Administrador de tareas" y si hay un "Instalador de Windows" ejecutándose que no utiliza recursos, elimínelo, existe la posibilidad de que la instalación continúe normalmente después de eso.
  • Ejecute el instalador como administrador. No puede hacer esto con el habitual Clic derecho -> Ejecutar como administrador (no disponible para archivos .msi). En su lugar, debe navegar hasta el instalador en la consola de administración (haga clic con el botón derecho en el ícono de Windows, luego PowerShell (Administrador)) y ejecútelo desde allí, o simplemente escriba la ruta completa en la consola de administración. En nuestro caso, la ruta completa era H:\Downloads\mysql-installer-community-8.0.17.0.msi.

Requisitos que fallan:

  • Si durante la instalación recibe un mensaje que dice que tiene "Requisitos fallidos", regrese a la pestaña "elegir un tipo de configuración" y elija "personalizado" y luego elimine los requisitos fallidos (si no\ no tiene instalado Excel, por ejemplo) podría resolver el problema.

Conclusión

MySQL es el Sistema de gestión de bases de datos relacionales (RDBMS) más utilizado en el mundo, y proporciona datos a alrededor de un tercio de las aplicaciones actuales.

Utiliza un lenguaje de datos SQL estandarizado y funciona en muchos sistemas operativos con controladores que permiten a los desarrolladores conectarse con todos los lenguajes de programación populares.

Hemos instalado y configurado una base de datos simple con un par de tablas para validar si funciona correctamente.