No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Digital Ocean

Curso de Digital Ocean

Santiago Bernal

Santiago Bernal

Instalación de Mysql en un Droplet

22/26
Recursos

¿Cómo instalar un nuevo droplet en Ubuntu?

Instalar un nuevo droplet en Ubuntu es un paso esencial para crear y configurar un servidor basado en la nube. Primero, es importante asegurar que hemos seleccionado la imagen de Ubuntu adecuada, en este caso, Ubuntu 64 bits. Se recomienda usar el plan estándar y habilitar el networking privado para permitir la comunicación segura entre los droplets a través de sus IPs privadas.

  1. Creación del droplet:

    • Seleccione la imagen Ubuntu 64 bits.
    • Utilice el plan estándar.
    • Habilite la opción de networking privado.
    • Asigne un nombre al droplet y una etiqueta de identificación.
  2. Conexión inicial al droplet:

    • Copie la IP pública y privada.
    • Acceda por SSH usando el comando:
      ssh usuario@dirección_IP
      

¿Cómo actualizar los paquetes y instalar MySQL?

Mantener el servidor actualizado es crucial para su funcionamiento seguro y eficiente. Además, instalar el servicio de base de datos MySQL es un paso fundamental para manejar información estructurada.

  1. Actualización del servidor:

    • Actualice los repositorios con el comando:
      apt-get update
      
    • Actualice los paquetes con:
      apt-get upgrade
      
  2. Instalación de MySQL:

    • Use el siguiente comando para instalar MySQL Server:
      apt-get install mysql-server
      
  3. Configuración de seguridad de MySQL:

    • Ejecute el script de seguridad:
      mysql_secure_installation
      
    • Defina una nueva contraseña para el usuario root.
    • Elimine usuarios anónimos y deshabilite el acceso remoto para root.
    • Elimine la base de pruebas y refresque los privilegios con:
      FLUSH PRIVILEGES;
      

¿Cómo configurar usuarios y accesos en MySQL?

Crear y gestionar usuarios con permisos adecuados es vital para la seguridad y funcionalidad del sistema de bases de datos. Aquí se crea un usuario específico para nuestro servidor backend.

  1. Creación de usuarios:

    • Inicie sesión en MySQL usando el usuario root.
    • Cree un nuevo usuario y asígnele privilegios:
      GRANT ALL PRIVILEGES ON *.* TO 'platzi'@'IP_PRIVADA' IDENTIFIED BY 'Platzi2019';
      
  2. Modificación de configuración de MySQL:

    • Edite el archivo de configuración de MySQL:
      sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
      
    • Comente la línea que restringe conexiones solo desde localhost.
    • Reinicie MySQL para aplicar cambios:
      sudo service mysql restart
      

¿Cómo establecer conexiones entre backend y bases de datos?

Finalmente, es importante verificar que la configuración de la conexión entre el servidor backend y la base de datos esté correcta, facilitando el acceso y uso de la base de datos desde servicios externos.

  1. Verificación de conexión:

    • Instale el cliente MySQL adecuado:
      apt-get install mysql-client
      
    • Establezca conexión usando:
      mysql -u platzi -h IP_PRIVADA -p
      
  2. Creación de la base de datos para WordPress:

    • Dentro de MySQL, crea una base de datos:
      CREATE DATABASE curso;
      

Con estos pasos, no solo habrás instalado y configurado un servidor Ubuntu con MySQL, sino que también habrás sentado las bases para el manejo eficiente de bases de datos en futuras aplicaciones como WordPress. ¡Sigue aprendiendo y mejorando tus habilidades!

Aportes 14

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Al ejecutar "grant all privileges on . " se le esta dando permisos muy elevados al usuario, este puede realizar todo lo que quiera en todas las bases de datos lo cual no es una buena practica, lo ideal seria: grant all privileges on nombre_base_datos.* to ‘nombre_usuario’@‘host’

Al día de hoy
La ultima versión es mysql 8.0.23 y la configuración es diferente.

A partir de MySQL 8 ya no puede (implícitamente) crear un usuario usando el comando GRANT.
En su lugar debemos utilizar el comando CREATE USER , seguido de la declaración GRANT :

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

En un mismo droplet puedo instalar ngnix, php y mysql? o es necesario crear un droplet para cada uno de estos servicios?

Por temas de seguridad se recomienda no usar el usuario root para acceso por ssh, preferiblemente crear un usuario sin privilegios para conectarse y posteriormente escalar los permisos de root ya estando autenticado.

Para los que estamos llevando el curso actualmente, asegúrense de crear el Droplet con 1 GB Memory / 10 GB Disk / SFO3 - Ubuntu 20.04 (LTS) x64. Como mínimo. Es una sugerencia.

Si tienen algún problema con agregar un nuevo usuario a la base de datos, pueden probar con esto:

mysql -u root

CREATE USER 'admin'@'backend_ip_privada' IDENTIFIED WITH mysql_native_password BY 'admin';

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'backend_ip_privada' WITH GRANT OPTION;

Hola, tengo un problema. Sigo todo al pie de la letra, pero cuando me quiero conectar a mysql desde el servidor backend, tarda demasiado y luego indica este error:

ERROR 2003 (HY000): Can't connect to MySQL server on '10.116.0.2' (110)```
Creamos el nuevo Droplet: baseDeDatos Actualizar Droplet: `apt-get update ` `apt-get upgrade` Instalar base de datos: `apt-get install mysql-server` Agregar opciones de seguridad: `mysql_secure_installation` n porque no vamos a usar el plugin de contraseñas. Si nos sale lo de eliminar usuarios anónimos, lo recomendable es eliminarlos si vamos a pasar a producción. Creamos un nuevo ususario: `mysql -u root` No funciona: `grant all privileges on *.* to 'usuario'@'ip_privada_servidor_backend' identified by 'contraseña';` Si funciona (fuente:gemini.ia): ¡Claro! Veo el error en tu sintaxis. El problema está en cómo estás combinando la concesión de privilegios con la definición de la contraseña. La sintaxis correcta para crear un nuevo usuario y otorgarle permisos desde un servidor backend es la siguiente, dividida en dos comandos separados: **1. Crear el usuario:** SQL`CREATE USER 'usuario'@'ip_privada_servidor_backend' IDENTIFIED BY 'contraseña'`; * `CREATE USER`: Esta es la instrucción para crear un nuevo usuario de MySQL. * `'usuario'`: Reemplaza esto con el nombre de usuario que deseas crear. * `'ip_privada_servidor_backend'`: Aquí debes colocar la dirección IP privada del servidor backend desde donde se conectará este usuario. Asegúrate de usar comillas simples alrededor del nombre de usuario y la IP del host. * `IDENTIFIED BY 'contraseña'`: Reemplaza esto con la contraseña que deseas asignar a este usuario. También debe ir entre comillas simples. **2. Otorgar los privilegios:** SQL`GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'ip_privada_servidor_backend'`; * `GRANT ALL PRIVILEGES`: Esto otorga todos los permisos posibles al usuario. Si deseas ser más específico, puedes listar los privilegios que quieres conceder (por ejemplo, `SELECT`, `INSERT`, `UPDATE`, `DELETE` en lugar de `ALL PRIVILEGES`). * `ON *.*`: Esto especifica que los privilegios se aplican a todas las bases de datos (`*`) y a todas las tablas dentro de esas bases de datos (`.*`). Si quieres limitar los permisos a una base de datos o tabla específica, debes indicarlo aquí (por ejemplo, `ON nombre_basededatos.*` o `ON nombre_basededatos.nombre_tabla`). * `TO 'usuario'@'ip_privada_servidor_backend'`: Esto indica a qué usuario y desde qué host se aplican los privilegios. Debe coincidir exactamente con la definición del usuario que creaste en el paso anterior. **Después de ejecutar estos dos comandos, es muy importante que ejecutes el siguiente comando para que los cambios de privilegios surtan efecto:** SQLFLUSH PRIVILEGES; **En resumen, tu secuencia de comandos correcta debería ser:** SQL`CREATE USER 'usuario'@'ip_privada_servidor_backend' IDENTIFIED BY 'contraseña'`; `GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'ip_privada_servidor_backend'`; FLUSH PRIVILEGES; Asegúrate de reemplazar `'usuario'`, `'ip_privada_servidor_backend'` y `'contraseña'` con los valores correctos para tu entorno. ¡Espero que esto te ayude! ¿Hay algo más en lo que pueda asistirte? `exit` editar archivo: `nano /etc/mysql/mysql.conf.d/mysqld.cnf` Ctrl+W -> bind \#bind-address = 127.0.0.1 \#mysqlx-bind-address = 127.0.0.1 Reiniciar el servicio de base de datos: `/etc/init.d/mysql restart` Instalar cliente de mysql en nuestro servidor backend: `apt install mysql-client-core-8.0` Iniciar sesión desde nuestro servidor backend: `mysql -u usuario -h ip_privada_servidor_base_de_datos -p` Crear base de datos: `create database curso` `exit`
No me salio la opcion de crear la contraseña xd
En caso de que no te deje ejecutar apt-get install mysql-client-core-5.7, entonces cambialo por mysql-client-core-8.0
Se debe crear un droplet con minimo 1GB de memoria RAM. Si lo creas por ejemplo con 512MB, la instalación te dará error.

Esas apps que ya vienen preconfiguradas son dockers?

Buena clase 🙌

En un solo servidor si se pueden instalar todos lo necesario para esta practica como un LAMP uw significa mysql, apache y php en linux.