Los usuarios de Ubuntu pueden elegir entre dos Sistemas de gestión de bases de datos relacionales fiables (RDBMS),MySQL y MariaDB . MySQL tiene una ventaja de larga data en popularidad, pero ha aumentado el interés en MariaDB debido a sus ventajas de rendimiento y funciones adicionales. Esta guía compara los dos sistemas de bases de datos y brinda instrucciones sobre cómo instalar y usar MySQL en Ubuntu 20.04.
¿Qué es MySQL?
MySQL RDBMS es una de las aplicaciones de código abierto más populares. Es parte de la pila LAMP , que es la piedra angular de muchos sistemas Ubuntu. Esta pila consta de Linux, el servidor web Apache, MySQL RDBMS y el lenguaje de programación PHP. Estas aplicaciones funcionan juntas para admitir aplicaciones web, desarrollo de software y actividades especializadas como la ciencia de datos. El uso principal de MySQL es en configuraciones de un solo servidor de tamaño pequeño a mediano.
Las consultas de MySQL están escritas en el lenguaje de consulta estructurado (SQL). Como base de datos relacional, almacena y organiza datos en tablas. Las tablas estructuran los datos reales dentro de las tablas como una serie de filas, y cada fila consta de una o más columnas. Cada fila representa una entrada diferente en la tabla, mientras que cada columna contiene un campo de datos dentro de la entrada. Los campos de datos de estas tablas se pueden relacionar entre sí, y estas relaciones ayudan a estructurar y organizar la base de datos. Las declaraciones SQL especializadas permiten a los clientes agregar, eliminar, modificar y recuperar datos.
MySQL es conocido por su estabilidad y confiabilidad y se considera simple y fácil de usar. Está disponible como software gratuito de código abierto bajo la Licencia Pública General GNU. MySQL está disponible para todas las distribuciones de Linux, así como para otros sistemas operativos. Ahora es propiedad de Oracle Corporation. Oracle también ofrece la edición comercial de MySQL Enterprise como un producto de gama alta.
MySQL frente a MariaDB
Las dos principales alternativas de bases de datos de código abierto, MySQL y MariaDB, son muy similares. Ambos son productos RDBMS y ambos usan SQL. Ambos sistemas de bases de datos tienen versiones gratuitas y se ven y actúan de la misma manera. Debido a que MariaDB originalmente se separó de MySQL, esto no es sorprendente. Desde entonces, MariaDB ha experimentado un mayor desarrollo y presenta muchas mejoras nuevas en seguridad y rendimiento. Sin embargo, con MySQL, muchas funciones avanzadas solo se encuentran en la edición Enterprise. Aquí hay un resumen de las similitudes y diferencias entre los dos productos:
- MariaDB admite más conexiones que MySQL.
- Ambas bases de datos pueden funcionar con múltiples sistemas de almacenamiento, aunque MariaDB ofrece más opciones.
- MariaDB puede replicar datos más rápidamente que MySQL y tiene un mejor rendimiento general. MySQL maneja transacciones grandes de manera más efectiva, pero MariaDB funciona mejor en situaciones escaladas.
- MySQL admite algunas funciones que MariaDB no tiene, como columnas dinámicas. Cada base de datos tiene algunas características y mejoras avanzadas que la otra no tiene.
- MySQL es más antiguo, está mejor establecido, es más popular y tiene más apoyo de la comunidad. MySQL ofrece planes de soporte pagados más completos.
- MariaDB y MySQL son totalmente compatibles.
- Ambos productos son de código abierto, pero el modelo de licencia de MySQL es más restrictivo.
En resumen, ambos sistemas son más que adecuados para la mayoría de los usuarios. MariaDB presenta un mejor rendimiento, mientras que MySQL está mejor establecido y tiene mejor soporte.
Antes de comenzar
-
Si aún no lo ha hecho, cree una cuenta de Linode y una instancia de cómputo. Consulte nuestras guías Introducción a Linode y Creación de una instancia informática.
-
Siga nuestra guía de configuración y protección de una instancia informática para actualizar su sistema. También puede establecer la zona horaria, configurar su nombre de host, crear una cuenta de usuario limitada y fortalecer el acceso SSH.
Nota Los pasos de esta guía están escritos para usuarios no root. Los comandos que requieren privilegios elevados tienen el prefijosudo
. Si no está familiarizado consudo
comando, consulte la guía Usuarios y grupos de Linux.
Cómo instalar el servidor MySQL
MySQL está disponible como parte de los paquetes predeterminados de Ubuntu, por lo que no es necesario editar la lista de fuentes. Se puede instalar fácilmente usando apt
, pero es importante proteger la aplicación y editar el cortafuegos después. Estas instrucciones están dirigidas a los usuarios de Ubuntu, pero generalmente se aplican a aquellos que desean instalar MySQL en otra distribución de Linux.
Descargar MySQL
Para instalar el servidor MySQL en Ubuntu, siga los pasos a continuación:
-
Instale la aplicación del servidor MySQL.
sudo apt install mysql-server
-
Confirme que el servidor MySQL se está ejecutando utilizando
systemctl
dominio. Debería mostrar un estado deactive
.sudo systemctl status mysql
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Configure el servidor MySQL en Linux
La mysql_secure_installation
La utilidad es la forma más fácil de configurar la aplicación. Para usar el script de configuración, siga estos pasos:
-
Inicie
mysql_secure_installation
utilidad para establecer la contraseña de root y configurar otras opciones predeterminadas.sudo mysql_secure_installation
-
La aplicación pregunta si desea activar el
VALIDATE PASSWORD COMPONENT
componente. Si respondesy
, luego pregunta si desea establecer la seguridad de la contraseña enLOW
,MEDIUM
, oHIGH
.VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
-
En el siguiente mensaje, la utilidad solicita una contraseña para la cuenta raíz. Establezca la contraseña y luego vuelva a ingresarla.
Please set the password for root here. New password: Re-enter new password:
-
Las siguientes preguntas preguntan si se deben eliminar los usuarios anónimos para permitir que
root
cuenta para conectarse de forma remota y eliminar latest
base de datos. Introducey
on
en cada indicación según sus preferencias. Latest
La base de datos es útil durante la validación inicial, pero por razones de seguridad, es mejor deshabilitar laroot
cuenta inicie sesión de forma remota.By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No
-
Cuando se le solicite, vuelva a cargar el
privilege
tablas para actualizar la base de datos.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No)
y
Success. All done!
-
(Opcional ) Para acceder a MySQL de forma remota, asegúrese de que el tráfico de MySQL esté permitido a través de
ufw
cortafuegos Agregue la siguiente regla para abrir el puerto3306
en el cortafuegos. Esta regla no debe agregarse si no se requiere acceso remoto.ufw allow mysql
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Inicie sesión en MySQL como usuario raíz
Aunque la root
usuario tiene pleno acceso a la base de datos MySQL, su uso debe reservarse para fines administrativos. Esto reduce la posibilidad de sobrescribir accidentalmente secciones críticas de la base de datos. Incluso en una configuración de un solo usuario, se debe crear una cuenta de usuario separada para la mayoría de las actividades de MySQL.
Para acceder al servidor MySQL como root
usuario y cree una nueva cuenta de usuario, siga estos pasos:
-
Usa el
sudo mysql
comando para acceder a la base de datos. MySQL autentica al usuario raíz en función de sus credenciales raíz cuando inicia sesión localmente, por lo que no se requiere contraseña. Alternativamente, acceda a la cuenta raíz usandosudo mysql -u root -p
, junto con laroot
contraseña.sudo mysql
-
MySQL muestra el número de versión y alguna información sobre la instalación y luego presenta el indicador de MySQL.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql>
-
Para confirmar que MySQL está funcionando correctamente, use el
SHOW DATABASES
comando para mostrar todas las bases de datos.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Cree un nuevo usuario usando
CREATE USER
dominio. Ingrese el nombre de usuario en el formato'username'@'IP_Address'
, dondeIP_Address
es la dirección IP del usuario. Si el usuario accede a MySQL desde el Linode local, sustituyalocalhost
en lugar de la dirección IP. En el siguiente comando, reemplacemysqluser
ypassword
con el nombre de usuario y la contraseña reales.Nota MySQL ofrece varios mecanismos de autenticación diferentes. El
caching_sha2_password
El método se recomienda para los usuarios que desean iniciar sesión con una contraseña y se utiliza aquí. Sin embargo, es posible que ciertas aplicaciones más antiguas no puedan autenticarse correctamente de esta manera. En ese caso,mysql_native_password
debe usarse en su lugar. La replicación de la fuente de MySQL puede requerir lasha256_password
método.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Otorgue acceso al nuevo usuario usando el
GRANT PRIVILEGE
comando, usando el formatoGRANT list of privileges ON table TO 'username'@'IP_Address';
. Algunos de los privilegios más comunes incluyenCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
ySELECT
. Para aplicar estos privilegios a todas las bases de datos, use la variable comodín*.*
. El siguiente comando otorga privilegios comunes no administrativos en todas las bases de datos amysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
Para salir del indicador de MySQL, escriba
exit
.exit
Cómo usar MySQL
MySQL usa sintaxis SQL estándar para todos sus comandos. Los pasos de esta sección demuestran cómo realizar tareas básicas en MySQL, como crear bases de datos, tablas y agregar datos. Para obtener información completa sobre cómo usar MySQL, consulte el Manual de referencia de MySQL. Para una introducción breve pero completa, pruebe el tutorial de MySQL.
Crear una base de datos
-
Para crear una base de datos, inicie sesión en MySQL con una cuenta que tenga
CREATE
privilegios Reemplacemysqlusername
con el nombre de usuario que creaste.mysql -u mysqlusername -p
-
Cree una nueva base de datos utilizando
CREATE DATABASE
dominio. Reemplazarnewdatabasename
con el nombre deseado para su base de datos.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
Para confirmar que la nueva base de datos se ha creado correctamente, use
SHOW DATABASES
.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Indica la base de datos con la que quieres trabajar utilizando el
USE
dominio. Reemplazarnewdatabasename
con el nombre de la base de datos que acaba de crear.USE newdatabasename;
Database changed
Nota También puede usar el
USE
comando cuando tiene más de una base de datos y desea cambiar entre ellas. -
Para averiguar el nombre de la base de datos actual, utilice
SELECT DATABASE
dominio. La salida muestra el nombre de la base de datos.SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Crear una tabla
En este punto, la base de datos, newdatabasename
no tiene ninguna tabla, por lo que todavía no es posible almacenar ningún dato en ella. Para definir una tabla, utilice CREATE TABLE
dominio. Junto con el nombre de la tabla, este comando requiere el nombre y el tipo de datos de cada campo. El tipo de datos caracteriza los datos almacenados en el campo. Por ejemplo, el tipo de datos podría ser una cadena de longitud variable, conocida como VARCHAR
. Para obtener una lista completa de tipos de datos, consulte la documentación de MySQL. Algunos de los tipos de datos más comunes son los siguientes.
- INT: Esto puede contener un valor entre
-2147483648
y2147483647
. Si se especifica comoUNSIGNED
, puede almacenar valores entre0
y4294967295
. - PUNTO PEQUEÑO: Contiene un valor entero aún más pequeño entre
-32768
y32767
. - FLOTANTE: Este tipo puede almacenar un número de punto flotante.
- FECHA: Almacena una fecha en
YYYY-MM-DD
formato. - FECHA Y HORA: Almacena una combinación de fecha y hora en
YYYY-MM-DD HH:MM:SS
formato. La misma hora se puede almacenar sin guiones ni dos puntos en elTIMESTAMP
formato. - VARCHAR(N): Esta es una cadena de longitud variable entre
1
yN
caracteres de longitud, con una longitud máxima de255
personajes. - TEXTO: Este tipo de datos contiene hasta
65535
caracteres. Puede contener texto, imágenes o datos binarios. - CARÁCTER(N): Este tipo representa un campo de texto de longitud fija de longitud
N
. Por ejemplo, para contener códigos de estado de dos caracteres, use un tipo de datos deCHAR(2)
.
Antes de crear cualquier tabla, es importante decidir sobre un esquema para la base de datos. El esquema describe lo que representa cada tabla, qué datos se almacenan en cada tabla y cómo se relacionan las tablas. Para crear una tabla, siga estos pasos:
-
Mientras está conectado a MySQL, cambie a la base de datos donde desea agregar la tabla.
use newdatabasename;
-
Usa el
CREATE TABLE
comando para generar una nueva tabla. Utilice el formatoCREATE TABLE table_name (field_1 datatype, field_n datatype);
.CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);
Query OK, 0 rows affected (0.02 sec)
-
Para confirmar que la tabla ahora existe, use
SHOW TABLES
comando.SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
Para revisar la estructura de la tabla y verificar la lista de campos, use el
DESCRIBE
comando.DESCRIBE newtablename;
+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
-
Si una tabla ya no es necesaria, elimínela con
DROP TABLE
comando.Precaución Cuando se descarta una tabla, todos los datos dentro de la tabla se pierden y no se pueden recuperar.
DROP TABLE newtablename;
Agregar y recuperar datos
La forma principal de insertar una nueva fila de datos en una tabla es con INSERT
comando.
-
Para agregar una fila, use
INSERT
dominio. Especifique el nombre de la tabla, la palabra claveVALUES
, y una lista de valores entre paréntesis separados por comas en el formatoINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Los valores de la columna deben tener la misma secuencia que la definición de la tabla, con los valores de cadena y fecha entre comillas. Por ejemplo, para agregar datos anewtablename
, especifique valores paracolumn1
,column2
,column3
ycolumn4
, en ese orden.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
Para recuperar datos, utilice
SELECT
comando, junto con algunas restricciones que le indican a MySQL qué filas devolver. Se puede devolver todo el contenido de la tabla, o solo un subconjunto. Para seleccionar todas las filas de una tabla, utiliceSELECT *
comando, pero no agregue ningún calificador.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
-
También es posible seleccionar solo filas que se ajusten a criterios particulares, por ejemplo, donde una columna se establece en un valor determinado. Usa el
WHERE
palabra clave como calificador, seguido del criterio de coincidencia como restricción. En este ejemplo, solo las filas en las quecolumn2
se establece enb
se muestran.SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
Para tablas con muchas columnas, a menudo es más fácil limitar la información que se muestra. Para seleccionar solo ciertas columnas para cada fila, especifique los nombres de columna en lugar de
*
símbolo.SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
Para modificar una fila en una tabla, use el
UPDATE
dominio. ElSET
palabra clave indica la columna a actualizar y el nuevo valor. Si es necesario, elWHERE
La palabra clave proporciona un método para restringir la operación para que solo se aplique a ciertas filas. En el siguiente ejemplo, el valor decolumn4
solo se cambia a155
sicolumn2
es igual ab
.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
El
SELECT *
declaración se puede utilizar para confirmar la actualización.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Conclusión:MySQL en Ubuntu 20.04
MySQL es una buena opción para aplicaciones web pequeñas y medianas. Utiliza el lenguaje de programación SQL estándar de la industria, que es bastante sencillo de usar. MySQL es muy estable y robusto y tiene muchos recursos junto con un buen soporte. La principal alternativa a MySQL es MariaDB. Cuenta con un mejor rendimiento y funciones más nuevas, pero no está tan bien establecido.
Puede descargar e instalar fácilmente el servidor MySQL en Ubuntu usando apt
paquetes y mysql_secure_installation
utilidad. Incluso si usted es la única persona que usa MySQL, es mejor crear un nuevo usuario de MySQL con privilegios más limitados.
Para usar MySQL, primero determine el esquema de la base de datos y defina el contenido de la tabla. A continuación, cree una base de datos y las tablas de datos. Los datos se pueden agregar usando INSERT
comando, modificado usando UPDATE
comando, y se recupera usando SELECT
dominio. Por supuesto, MySQL puede realizar incluso operaciones muy complejas. Realice el tutorial de MySQL para comenzar y consulte la documentación de MySQL para obtener una descripción general completa.
Más información
Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.
- Sitio web de MariaDB
- Sitio web de MySQL