sql >> Base de Datos >  >> RDS >> Mysql

Instalación y configuración de MySQL en Ubuntu 20.04

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

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

  2. 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 prefijo sudo . Si no está familiarizado con sudo 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:

  1. Instale la aplicación del servidor MySQL.

    sudo apt install mysql-server
    
  2. Confirme que el servidor MySQL se está ejecutando utilizando systemctl dominio. Debería mostrar un estado de active .

    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:

  1. Inicie mysql_secure_installation utilidad para establecer la contraseña de root y configurar otras opciones predeterminadas.

    sudo mysql_secure_installation
    
  2. La aplicación pregunta si desea activar el VALIDATE PASSWORD COMPONENT componente. Si respondes y , luego pregunta si desea establecer la seguridad de la contraseña en LOW , MEDIUM , o HIGH .

    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?
  3. 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:
  4. Las siguientes preguntas preguntan si se deben eliminar los usuarios anónimos para permitir que root cuenta para conectarse de forma remota y eliminar la test base de datos. Introduce y o n en cada indicación según sus preferencias. La test La base de datos es útil durante la validación inicial, pero por razones de seguridad, es mejor deshabilitar la root 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
  5. 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!
  6. (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 puerto 3306 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:

  1. 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 usando sudo mysql -u root -p , junto con la root contraseña.

    sudo mysql
    
  2. 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>
  3. 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)
  4. Cree un nuevo usuario usando CREATE USER dominio. Ingrese el nombre de usuario en el formato 'username'@'IP_Address' , donde IP_Address es la dirección IP del usuario. Si el usuario accede a MySQL desde el Linode local, sustituya localhost en lugar de la dirección IP. En el siguiente comando, reemplace mysqluser y password 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 la sha256_password método.
    CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
    
  5. Otorgue acceso al nuevo usuario usando el GRANT PRIVILEGE comando, usando el formato GRANT list of privileges ON table TO 'username'@'IP_Address'; . Algunos de los privilegios más comunes incluyen CREATE , ALTER , DROP , INSERT , UPDATE , DELETE y SELECT . 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 a mysqluser .

    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
    
  6. 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

  1. Para crear una base de datos, inicie sesión en MySQL con una cuenta que tenga CREATE privilegios Reemplace mysqlusername con el nombre de usuario que creaste.

    mysql -u mysqlusername -p
    
  2. Cree una nueva base de datos utilizando CREATE DATABASE dominio. Reemplazar newdatabasename con el nombre deseado para su base de datos.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. 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)
  4. Indica la base de datos con la que quieres trabajar utilizando el USE dominio. Reemplazar newdatabasename 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.
  5. 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 y 2147483647 . Si se especifica como UNSIGNED , puede almacenar valores entre 0 y 4294967295 .
  • PUNTO PEQUEÑO: Contiene un valor entero aún más pequeño entre -32768 y 32767 .
  • 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 el TIMESTAMP formato.
  • VARCHAR(N): Esta es una cadena de longitud variable entre 1 y N caracteres de longitud, con una longitud máxima de 255 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 de CHAR(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:

  1. Mientras está conectado a MySQL, cambie a la base de datos donde desea agregar la tabla.

    use newdatabasename;
    
  2. Usa el CREATE TABLE comando para generar una nueva tabla. Utilice el formato CREATE 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)
  3. Para confirmar que la tabla ahora existe, use SHOW TABLES comando.

    SHOW TABLES;
    
    +----------------------------+
    | Tables_in_newdatabasename |
    +----------------------------+
    | newtablename              |
    +----------------------------+
    1 row in set (0.00 sec)
  4. 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)
  5. 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.

  1. Para agregar una fila, use INSERT dominio. Especifique el nombre de la tabla, la palabra clave VALUES , y una lista de valores entre paréntesis separados por comas en el formato INSERT 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 a newtablename , especifique valores para column1 , column2 , column3 y column4 , en ese orden.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
    
    Query OK, 1 row affected (0.01 sec)
  2. 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, utilice SELECT * 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)
  3. 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 que column2 se establece en b 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)
  4. 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)
  5. Para modificar una fila en una tabla, use el UPDATE dominio. El SET palabra clave indica la columna a actualizar y el nuevo valor. Si es necesario, el WHERE 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 de column4 solo se cambia a 155 si column2 es igual a b .

    UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
    
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
  6. 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