Instalación de Ubuntu 22.04 mysql 8.0 y guía para evitar pozos

MySQL es un sistema de gestión de bases de datos de código abierto que se puede instalar como parte de la popular pila LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Implementa un modelo relacional y utiliza lenguaje de consulta estructurado (SQL) para gestionar sus datos.

Este tutorial explicará cómo instalar MySQL versión 8.0 en el servidor Ubuntu 22.04. Al completarlo, tendrá una base de datos relacional funcional que podrá utilizar para crear su próximo sitio web o aplicación.

Instalar MySQL

En Ubuntu 22.04, puede instalar MySQL utilizando el repositorio de paquetes APT. Al momento de escribir este artículo, la versión de MySQL disponible en el repositorio predeterminado de Ubuntu es la versión 8.0.33.

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql.service

Estos comandos instalarán e iniciarán MySQL, pero no le solicitarán que establezca una contraseña ni realice ningún otro cambio de configuración.

Configurar MySQL

Para realizar una instalación nueva de MySQL, debe ejecutar los scripts de seguridad incluidos con el sistema de administración de bases de datos. Este script cambia algunas opciones predeterminadas menos seguras, como no permitir inicios de sesión remotos como root y eliminar el usuario de muestra.

Advertencia: a partir de julio de 2022, si ejecuta el script mysql_secure_installation sin configuración adicional, se producirá un error. La razón es que este script intentará establecer una contraseña para la cuenta raíz de MySQL de la instalación, pero de forma predeterminada en las instalaciones de Ubuntu esta cuenta no está configurada para conectarse con una contraseña.

Antes de julio de 2022, este script fallaba silenciosamente después de intentar establecer la contraseña de la cuenta raíz y continuar con las indicaciones restantes. Sin embargo, al momento de escribir este artículo, el script devolverá el siguiente error después de ingresar y confirmar su contraseña:

Output
 ... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

New password:

Esto hará que el script entre en un bucle recursivo del que sólo podrá salir cerrando la ventana del terminal.

Debido a que el script mysql_secure_installation realiza muchas otras operaciones que son útiles para proteger su instalación de MySQL, se recomienda ejecutarlo antes de comenzar a usar MySQL para administrar sus datos. Sin embargo, para evitar entrar en este bucle recursivo, primero debe ajustar el método de autenticación del usuario raíz de MySQL.

Primero ingrese a la terminal MySQL

sudo mysql

Luego ejecute el siguiente comando ALTER USER para cambiar el método de autenticación del usuario root a uno que use una contraseña. El siguiente ejemplo cambia el método de autenticación a mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Luego sal de MySQL

exit

Luego, puede ejecutar el script mysql_secure_installation sin ningún problema.

Ejecute mysql_secure_installation con privilegios sudo

sudo mysql_secure_installation

Esto lo guiará a través de una serie de indicaciones donde podrá realizar algunos cambios en las opciones de seguridad de su instalación de MySQL. El primer mensaje le preguntará si desea configurar el complemento Validar contraseña, que puede usarse para probar la seguridad de la contraseña de los nuevos usuarios de MySQL antes de que se consideren válidas.

Si elige configurar el complemento Validar contraseña, cualquier usuario de MySQL que cree y que se autentique con contraseñas deberá tener contraseñas que cumplan con la política que elija:

Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
 2

Independientemente de si elige configurar un complemento de verificación de contraseña, el siguiente mensaje será establecer una contraseña para el usuario raíz de MySQL. Ingrese y confirme una contraseña segura de su elección:

Output
Please set the password for root here.


New password:

Re-enter new password:

Tenga en cuenta que aunque haya establecido una contraseña para el usuario raíz de MySQL, ese usuario no está configurado actualmente para usar una contraseña para la autenticación cuando se conecta al shell de MySQL.

Si utiliza el complemento Verificar contraseña, recibirá comentarios sobre la seguridad de su nueva contraseña. Luego, el script le preguntará si desea continuar usando la contraseña que acaba de ingresar o si desea ingresar una nueva contraseña. Suponiendo que está satisfecho con la seguridad de la contraseña que acaba de ingresar, ingrese Y para continuar con el script:

Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Desde allí, puede presionar Y y luego ENTER para aceptar los valores predeterminados para todas las preguntas posteriores. Esto eliminará algunos usuarios anónimos y la base de datos de prueba, deshabilitará el inicio de sesión remoto como root y cargará estas nuevas reglas para que MySQL implemente inmediatamente sus cambios.

Nota: Una vez que se completa el script de seguridad, puede volver a abrir MySQL y cambiar el método de autenticación del usuario raíz al valor predeterminado de auth_socket. Para autenticarse como usuario raíz de MySQL usando una contraseña, ejecute el siguiente comando:

mysql -u root -p

Luego use este comando para volver a usar el método de autenticación predeterminado:

Esto significa que puede usar el comando sudo mysql para conectarse nuevamente a MySQL como root.

Una vez que se complete el script, su instalación de MySQL estará protegida. Ahora puede proceder a crear un usuario de base de datos dedicado utilizando el cliente MySQL.

Cree un usuario MySQL dedicado y otorgue permisos

Después de la instalación, MySQL crea una cuenta de usuario raíz que puede usar para administrar la base de datos. Este usuario tiene permisos completos en el servidor MySQL, lo que significa que tiene control total sobre cada base de datos, tabla, usuario, etc. Por lo tanto, es mejor evitar utilizar esta cuenta fuera de funciones administrativas. Este paso describe cómo crear una nueva cuenta de usuario utilizando el usuario raíz de MySQL y otorgarle permisos.

Una vez que tenga acceso a la terminal MySQL, puede crear un nuevo usuario usando la instrucción CREATE USER. Estos siguen la siguiente sintaxis general:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

Después de CREAR USUARIO, especifica un nombre de usuario. A esto le sigue un símbolo @ y luego el nombre del host desde el que se conectará el usuario. Si solo planea acceder a este usuario localmente desde su servidor Ubuntu, puede especificar localhost. No siempre es necesario incluir el nombre de usuario y el host entre comillas simples, pero hacerlo puede ayudar a evitar errores.

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

Existe un problema conocido con ciertas versiones de PHP que causa problemas con caching_sha2_password. Si planea utilizar esta base de datos con una aplicación PHP (como phpMyAdmin), es posible que desee crear un usuario que se autentique utilizando el complemento mysql_native_password, más antiguo pero aún seguro:

CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Si no está seguro, siempre puede crear un usuario que se autentique usando caching_sha2_plugin y luego cambiarlo más tarde con este comando:

ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Después de crear nuevos usuarios, puede otorgarles los permisos adecuados. La sintaxis general para otorgar permisos de usuario es la siguiente (PRIVILEGE debe reemplazarse por CREATE, etc.):

GRANT PRIVILEGE ON database.table TO 'username'@'host'  WITH GRANT OPTION;

Los valores PRIVILEGE en esta sintaxis de ejemplo definen las operaciones que un usuario puede realizar en la base de datos y la tabla especificadas. Puedes otorgar múltiples permisos al mismo usuario en un solo comando separando cada permiso con una coma. También puede otorgar permisos de usuario globalmente ingresando un asterisco (*) en lugar de los nombres de la base de datos y las tablas. En SQL, el asterisco es un carácter especial que se utiliza para representar "todas" las bases de datos o tablas.

Para ilustrar este punto, el siguiente comando otorga al usuario permisos globales para crear, modificar y eliminar bases de datos, tablas y usuarios, así como el poder de insertar, actualizar y eliminar datos de cualquier tabla en el servidor. También otorga a los usuarios la capacidad de consultar datos usando SELECT, crear claves externas usando la palabra clave REFERENCES y realizar operaciones FLUSH usando permisos RELOAD. Sin embargo, sólo debes otorgar a los usuarios los permisos que necesitan, así que siéntete libre de ajustar los permisos de tus propios usuarios según sea necesario.

Ejecute esta declaración GRANT, reemplazando a samy con su propio nombre de usuario MySQL, para otorgar estos permisos a su usuario:

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Tenga en cuenta que esta declaración también incluye CON OPCIÓN DE SUBVENCIÓN. Esto permitirá que su usuario de MySQL otorgue cualquier permiso que tenga a otros usuarios en el sistema.

ADVERTENCIA: Es posible que algunos usuarios quieran otorgar permisos TODOS LOS PRIVILEGIOS a sus usuarios de MySQL, lo que les otorgará amplios permisos de superusuario similares a los permisos de usuario raíz, de la siguiente manera:

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Permisos tan amplios no deben otorgarse a la ligera, ya que cualquiera que tenga acceso a este usuario de MySQL tendrá control total de cada base de datos en el servidor.

Después de esto, es una buena idea ejecutar el comando FLUSH PRIVILEGES. Esto liberará toda la memoria almacenada en caché por el servidor debido a declaraciones CREATE USER y GRANT anteriores:

FLUSH PRIVILEGES;

Luego puedes iniciar la terminal mysql.

exit

En el futuro, para iniciar sesión como nuevo usuario de MySQL, utilizará un comando como este:

mysql -u sammy -p

El indicador -p hará que el cliente MySQL le solicite la contraseña del usuario de MySQL para la autenticación.

Finalmente, probemos la instalación de MySQL.

PruebaMySQL

No importa cómo lo hayas instalado, MySQL debería comenzar a ejecutarse automáticamente. Para probar esto, verifique su estado.

systemctl status mysql.service

El contenido de salida es el siguiente:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-06-13 15:43:21 CST; 35min ago
    Process: 248356 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 248364 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 18804)
     Memory: 371.1M
        CPU: 10.291s
     CGroup: /system.slice/mysql.service
             └─248364 /usr/sbin/mysqld

Si MySQL no se está ejecutando, puede iniciarlo usando sudo systemctl start mysql.

Para una verificación adicional, puede intentar conectarse a la base de datos usando la herramienta mysqladmin, que es un cliente que le permite ejecutar comandos administrativos. Por ejemplo, este comando significa conectarse como el usuario de MySQL llamado sammy (-u sammy), solicitar una contraseña (-p) y devolver la versión. Asegúrese de cambiar sammy por el nombre de su usuario exclusivo de MySQL e ingrese la contraseña de ese usuario cuando se le solicite:

sudo mysqladmin -p -u sammy version

Aquí hay un resultado de muestra:

mysqladmin  Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2023, Oracle and/or its affiliates.

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

Server version    8.0.33-0ubuntu0.22.04.2
Protocol version  10
Connection    Localhost via UNIX socket
UNIX socket    /var/run/mysqld/mysqld.sock
Uptime:      37 min 20 sec

Threads: 2  Questions: 41  Slow queries: 0  Opens: 199  Flush tables: 3  Open tables: 118  Queries per second avg: 0.018

Esto significa que MySQL está en funcionamiento.

en conclusión

En este punto, ya tiene una configuración básica de MySQL instalada en su servidor.

Supongo que te gusta

Origin blog.csdn.net/weixin_39636364/article/details/131234559
Recomendado
Clasificación