Instalación MySql Server
Instalación utilizando binarios
Oracle proporciona un conjunto de distribuciones binarias de MySQL. Estas incluyen distribuciones genéricas binarias en forma de archivos tar, archivos con una tar.xz como extensión. Existen diferentes binarios specíficos para cada plataforma. En esta sección vamos a ver la instalación de MySQL desde una distribución binaria de archivo tar comprimido para la plataforma Unix/Linux.
Ejemplo para descargar el binario:
terminal>wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
Para buscar la última versión disponible, visite la página de descargas de MySQL en:
https://downloads.mysql.com/archives/community
````
Advertencias:
* Si ha instalado previamnente una versión de MySql utilizando YUM/APT (Gestores de paquetes) puede experimentar problemas. Asegurarse de eliminar las aplicaciones y ficheros de configuración completamente del sistema
* MySql depende de la biblioteca **libaio**, si es necesario instalela utilizando el administrador de paquetes adecuado.
Para instalar una distribución binaria de archivo tar comprimido , descomprímalo en la ubicación de instalación que elija (normalmente /usr/local/mysql). Esto crea los directorios que se muestran en la siguiente tabla.
| **Directorio** | **Contenido** |
| - | - |
| bin | programas de utilidad, cliente y servidor **mysqld** |
| docs | Manual de MySQL en formato Info |
| man | Páginas de manual de Unix |
| include | Páginas de manual de Unix |
| lib | Bibliotecas |
| share | Mensajes de error, diccionario y SQL para la instalación de la base de datos |
| support-files | Archivos de soporte varios |
La secuencia de comandos para instalar MySql es la siguiente:
```terminal
terminal> groupadd mysql
terminal> useradd -r -g mysql -s /bin/false mysql
terminal> cd /usr/local
terminal> tar xvf /path/to/mysql-VERSION-OS.tar.xz
terminal> ln -s full-path-to-mysql-VERSION-OS mysql
terminal> export PATH=$PATH:/usr/local/mysql/bin
terminal> cd mysql
terminal> mkdir mysql-files
terminal> chown mysql:mysql mysql-files
terminal> chmod 750 mysql-files
terminal> bin/mysqld --initialize --user=mysql
terminal> bin/mysql_ssl_rsa_setup
terminal> bin/mysqld_safe --user=mysql & # Next command is optional
terminal> cp support-files/mysql.server /etc/init.d/mysql.server
Este proceso asume que tenemos acceso root al sistema. Alternativamente podemos prefijar cada comando usando el comando sudo
Crear un usuario y un grupo de mysql
Si su sistema aún no tiene un usuario y un grupo para usar para ejecutar mysqld, es posible que deba crearlos. La sintaxis de useradd y groupadd puede diferir ligeramente en diferentes versiones de Unix/Linux, o pueden tener diferentes nombres como adduser y addgroup.
terminal> groupadd mysql
terminal> useradd -r -g mysql -s /bin/false mysql
Debido a que el usuario solo es necesario para fines de propiedad, no de inicio de sesión, el comando useradd utiliza las opciones -ry -s /bin/false para crear un usuario que no tenga permisos de inicio de sesión en el servidor.
Obtenga y desempaquete la aplicación
Elija el directorio en el que desea descomprimir la distribución y cambie la ubicación en él. El ejemplo aquí descomprime la distribución en /usr/local. Por lo tanto, las instrucciones asumen que tiene permiso para crear archivos y directorios en /usr/local. Si ese directorio está protegido, debe realizar la instalación como root. Obtenga un archivo de distribución siguiendo las instrucciones de la “Cómo obtener MySQL” de la documentación de MySql. Para una versión determinada, las distribuciones binarias para todas las plataformas se crean a partir de la misma distribución fuente de MySQL. Desempaquete la distribución, que crea el directorio de instalación. tar puede descomprimir y descomprimir la distribución si tiene la zopción de soporte:
terminal> cd /usr/local
terminal> tar xvf /path/to/mysql-VERSION-OS.tar.xz
Si su tar no es compatible con xz utilizar el siguiente comando:
terminal> xz -dc /path/to/mysql-VERSION-OS.tar.xz | tar x
terminal> ln -s full-path-to-mysql-VERSION-OS mysql
terminal> export PATH=$PATH:/usr/local/mysql/bin
Instalación utilizando el gestor de paquetes APT de linux.
Al igual que en el punto anterior, asumimos que en el sistema no se ha instalado previamente ninguna verisón de MySql Server o ha sido eliminada completamente.
Pasos para una nueva instalación de MySql
Primero agragar el paquete .deb del repositorio APT de MySql. Podemos descargarlo del reporsitorio. Instalar el paquete con el siguiente comando (reemplazar x-y-z con la versión utlizada)
terminal> sudo dpkg -i mysql-apt-config_w.x.y-z_all.deb
terminal> sudo apt-get update
Instalación del paquete con APT
Instalar con el comando:
terminal> sudo apt-get install mysql-server
Iniciar y detener el servidor
El servidor MySQL se inicia automáticamente después de la instalación. Puede verificar el estado del servidor MySQL con el siguiente comando:
terminal> systemctl status mysql
Opciones de systemctl.
| Opcion | Significado | Comando |
|---|---|---|
| stop | Detener el servicio | systemctl stop mysql |
| start | Iniciar el servicio | systemctl start mysql |
| restart | Reiniciar el servicio (star/stop) | systemctl restart mysql |
| reload | Recargar la configuración | systemctl reload mysql |
Instalar componentes adicionales de MySql
Puedes usar APT para instalar componentes individuales de MySQL desde el repositorio APT de MySQL. Suponiendo que ya tiene el repositorio APT de MySQL en la lista de repositorios de su sistema. Primero, use el siguiente comando para obtener la información más reciente del paquete del repositorio APT de MySQL:
terminal> sudo apt-get update
terminal> sudo apt-get install mysql-workbench-community #cliente workbench
terminal> sudo apt-get install libmysqlclient21 #bibliotecas cliente compartidas
Actualizar la versión de MySql Server
Advertencias: * Tener una copiar de seguridad previa de la información antes de actualizar * Si es posible probar primero en un servidor de preproducción * Los comandos que veremos a continuación no sirven si la instalación previa no es de Oracle... Si es MariaDB o Percona
Primero asegurarse que tenemos el repositorio MySQL apt en nuestra lista de repositorios Actualizar el sistema
terminal> sudo apt-get update
terminal> sudo apt-get install mysql-server
Si hay que actualizar otros paquetes utilizar el mismo comando:
terminal> sudo apt-get install packege-name
Para saber el nombre delos paquetes instalados desde el repositorio APT de MySQL, use el siguiente comando:
terminal> dpkg -l | grep mysql | grep ii
Eliminando MySql con APT
Para desinstalar el servidor MySQL y los componentes relacionados que se han instalado usando el repositorio APT de MySQL, elimine el servidor MySQL y cualquier otro software que se haya instalado automáticamente usando los siguientes comandos:
terminal> sudo apt-get remove mysql-server
terminal> sudo apt-get autoremove
terminal> sudo apt-get remove package-name
Para ver una lista de los paquetes que han instalado desde el repositorio APT de MySQL, use el siguiente comando:
terminal> dpkg -l | grep mysql | grep ii
Paquetes disponibles del repositorio APT de Mysql
| Package Name | Description |
|---|---|
| mysql-server | Metapackage for installing the MySQL server |
| mysql-community-server | MySQL server |
| mysql-client | Metapackage for installing the MySQL client |
| mysql-cluster-community-auto-installer * | Auto installer for NDB Cluster |
| mysql-cluster-community-client | MySQL client for NDB Cluster |
| mysql-cluster-community-data-node | NDB Cluster data node |
| mysql-cluster-community-java | NDB Cluster Java drivers |
| mysql-cluster-community-management-server | NDB Cluster management node |
| mysql-cluster-community-memcached | NDB Cluster memcached server |
| mysql-cluster-community-nodejs | NDB Cluster Node.js adapters |
| mysql-cluster-community-server | MySQL server for NDB Cluster |
| mysql-cluster-community-source | Source package for NDB Cluster |
| mysql-cluster-community-test | NDB Cluster testsuite |
| mysql-community-client | MySQL client |
| mysql-common | MySQL database common files |
| libmysqlclient21 | MySQL database client library |
| libmysqlclient-dev | MySQL database development files |
| libmysqld-dev | MySQL embedded database development files |
| mysql-testsuite | Metapackage for installing the MySQL test suite |
| mysql-community-test | MySQL test suite |
| mysql-community-bench | MySQL benchmark suite |
| mysql-community-source | MySQL source code |
| mysql-workbench-community | MySQL Workbench (not available for Debian platforms) |
| mysql-connector-python-py3 | MySQL Connector/Python for supported Ubuntu versions with Python 3.2 or later |
| mysql-connector-python | MySQL Connector/Python for supported Debian versions with Python 2.6.3 or later, and for supported Ubuntu versions with Python 2.6.3 to 3.1 |
| mysql-router | MySQL Router |
| ndbclient | NDB Cluster client |
| ndbclient-dev | NDB Cluster client development library |
Configuración y pruebas posteriores a la instalación
Después de instalar MySQL, se debe inicializar el directorio de datos, incluidas las tablas en el esquema mysql del sistema: * Para algunos métodos de instalación de MySQL, la inicialización del directorio de datos es automática * Para otros métodos de instalación, se debe inicializar el directorio de datos manualmente. Estos incluyen la instalación desde distribuciones genéricas binarias y de origen en sistemas Unix y similares a Unix, y la instalación desde un paquete ZIP en Windows. En general, cuando instalamos desde un instalador (exe o msi en Windows o apt/yum en linux) la inicialización del directorio es automática. Cuando la instalación es mediante la copia de binarios o compilación hay que iniciar estos direcrtorios manualmente.
Inicialización del directorio de datos
Descripción general de la inicialización
Esta sección describe cómo inicializar el directorio de datos manualmente para los métodos de instalación de MySQL para los cuales la inicialización del directorio de datos no es automática. Advertencia. En MySQL 8.0, el complemento de autenticación predeterminado ha cambiado de mysql_native_password a caching_sha2_password, y la cuenta 'root'@'localhost' administrativa utiliza caching_sha2_password de forma predeterminada. Si prefiere que la cuenta root utilice el complemento de autenticación predeterminado anterior ( mysql_native_password), consulte caching_sha2_password y la cuenta administrativa raíz. Los pasos son los siguientes: * Cambiar la ubicación al nivel superior de instalación de mysql * Crear un directorio * Otorgar la propiedad de la carpeta al usuario y grupo mysql * Utilizar el servidor para inicializar el directorio de datos
terminal> cd /usr/local/mysql
terminal> mkdir mysql-files
terminal> chown mysql:mysql mysql-files
terminal> chmod 750 mysql-files
terminal> bin/mysqld --initialize --user=mysql
terminal>bin/mysql_ssl_rsa_setup
Procedimiento de inicialización del directorio de datos
Cambiar la ubicación al nivel superior de instalación de mysql.
terminal> cd /usr/local/mysql
-
Use --initialize para la instalación "segura por defecto" (es decir, incluida la generación de una rootcontraseña inicial aleatoria). En este caso, la contraseña se marca como caducada y debe elegir una nueva.
-
Con --initialize-insecure, no se genera ninguna contraseña para root. Esto es inseguro; se supone que tiene la intención de asignar una contraseña a la cuenta de manera oportuna antes de poner el servidor en uso de producción.
En sistemas Unix y similares a Unix, es importante que los directorios y archivos de la base de datos sean propiedad de la cuenta mysql de inicio de sesión para que el servidor tenga acceso de lectura y escritura a ellos cuando lo ejecute más tarde. Para garantizar esto inicia mysqld desde la cuenta root del sistema e incluye la opción --user como se muestra aquí:
terminal> bin/mysqld --initialize --user=mysql
terminal> bin/mysqld --initialize-insecure --user=mysql
Podría ser necesario especificar otras opciones, como --basedir o --datadir si mysqld no puede identificar las ubicaciones correctas para el directorio de instalación o el directorio de datos. Por ejemplo (ingrese el comando en una sola línea):
terminal> bin/mysqld --initialize --user=mysql
--basedir=/opt/mysql/mysql
--datadir=/opt/mysql/mysql/data
[mysqld]
basedir=/opt/mysql/mysql
datadir=/opt/mysql/mysql/data
Acciones en el servidor durante la inicialización del directorio de datos
Cuando se invoca con la opción --initialize o --initialize-insecure, mysqld realiza las siguientes acciones durante la secuencia de inicialización del directorio de datos: * El servidor verifica la existencia del directorio de datos (si no existe lo crea) * Si el directorio de datos existe pero no está vacio, el servidor se cierra después de producir un mensaje de error:
[ERROR] --initialize specified but the data directory exists. Aborting.
* Con *--initialize-insecure*, (ya sea con o sin --initialize porque --initialize-insecure implica --initialize), el servidor no genera una contraseña ni la marca caducada, y escribe un mensaje de advertencia:
#initialice
[Warning] A temporary password is generated for root@localhost:
iTag*AfrH5ej
#initialize-insecure
[Warning] root@localhost is created with an empty password ! Please
consider switching off the --initialize-insecure option.
Asignación de la contrseña root posterior a la inicialización
Estos son los pasos a seguir: * Iniciar el servidor * Conectarse al servidor
mysql -u root -p
Enter password: (enter the random root password here)
mysql -u root --skip-password
...
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
Iniciar el servidor
Para iniciar el servidor:
terminal> systemctl start mysqld
terminal> bin/mysqld_safe --user=mysql &
Probar el servidor
Después de inicializar el directorio de datos y de haber iniciado el servidor, realizar algunas pruebas sencillas para asegurarse de que funciona satisfactoriamente. Esta sección asume que su ubicación actual es el directorio de instalación de MySQL y que tiene un subdirectorio bin que contiene los programas de MySQL usados aquí. Si eso no es cierto, ajuste los nombres de la ruta de comando en consecuencia.
Alternativamente, agregue el directorio bin a su configuración de variable de entorno PATH. Eso permite que su terminal (intérprete de comandos) encuentre programas MySQL correctamente, de modo que pueda ejecutar un programa escribiendo solo su nombre, no su nombre de ruta.
Utilice mysqladmin para verificar que el servidor se esté ejecutando. Los siguientes comandos proporcionan pruebas simples para verificar si el servidor está funcionando y respondiendo a las conexiones:
terminal> bin/mysqladmin version
terminal> bin/mysqladmin variables
terminal> bin/mysqladmin -u root -p version
Enter password: (enter root password here)
terminal> bin/mysqladmin version
mysqladmin Ver 14.12 Distrib 8.0.26, for pc-linux-gnu on i686
...
Server version 8.0.26
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 14 days 5 hours 5 min 21 sec
Threads: 1 Questions: 366 Slow queries: 0
Opens: 0 Flush tables: 1 Open tables: 19
Queries per second avg: 0.000
terminal> bin/mysqladmin -u root shutdown
Verifique que pueda iniciar el servidor nuevamente. Haga esto usando mysqld_safe o invocando mysqld directamente. Por ejemplo:
terminal> bin/mysqld_safe --user=mysql &
terminal> bin/mysqlshow
+--------------------+
| Databases |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
Asegurar la cuenta inicial de MySQL
Esta sección describe cómo asignar una contraseña a la cuenta root inicial creada durante el procedimiento de instalación de MySQL, si aún no lo has hecho.
Advertencia: * En todas las plataformas, la distribución de MySQL incluye mysql_secure_installation , una utilidad de línea de comandos que automatiza gran parte del proceso de asegurar una instalación de MySQL.
Es posible que ya se haya asignado una contraseña a la cuenta inicial en las siguiente scircunstancias: * Las instalaciones que utilizan paquetes Debian le dan la opción de asignar una contraseña. * Para la inicialización del directorio de datos realizada manualmente usando mysqld --initialize, mysqld genera una contraseña aleatoria inicial, la marca como vencida y la escribe en el registro de errores del servidor.
La tabla mysql.user de concesión define la cuenta de usuario inicial de MySQL y sus privilegios de acceso. La instalación de MySQL crea solo una cuenta 'root'@'localhost' de superusuario que tiene todos los privilegios y puede hacer cualquier cosa. Si la cuenta root tiene una contraseña vacía, la instalación de MySQL está desprotegida: cualquiera puede conectarse al servidor MySQL root sin una contraseña y recibir todos los privilegios.
Para asignar una contraseña para la cuenat root MySQL inicial, utilice el siguiente procedimiento. Reemplace root-password en los ejemplos con la contraseña que desea usar.
Si la cuenta root existe con una contraseña aleatoria inicial que ha caducado, conéctate al servidor usando root esa contraseña, luego elige una nueva contraseña.
terminal> mysql -u root -p
Enter password: (enter the random root password here)
Elija una nueva contraseña para reemplazar la contraseña aleatoria:
...
...
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
Conéctate al servidor root sin usar contraseña:
terminal> mysql -u root --skip-password
Asignar una contraseña:
...
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';
Actualización de mysql
Rutas de actualización
-
Se admite la actualización de MySQL 5.7 a 8.0. Sin embargo, la actualización solo se admite entre las versiones de disponibilidad general (GA). Para MySQL 8.0, es necesario que actualice desde una versión de MySQL 5.7 GA (5.7.9 o superior). No se admiten actualizaciones de versiones no GA de MySQL 5.7.
-
Se recomienda actualizar a la última versión antes de actualizar a la siguiente versión. Por ejemplo, actualice a la última versión de MySQL 5.7 antes de actualizar a MySQL 8.0.
-
No se admite la actualización que omite versiones. Por ejemplo, no se admite la actualización directa de MySQL 5.6 a 8.0.
-
Una vez que una serie de lanzamientos alcanza el estado de Disponibilidad general (GA), se admite la actualización dentro de la serie de lanzamientos (de una versión GA a otra versión GA). Por ejemplo, actualizar desde MySQL 8.0.x a 8.0.y está apoyado. (No se admite la actualización que involucre versiones de estado de desarrollo que no sean de GA). También se admite la omisión de una versión. Por ejemplo, actualizar desde MySQL 8.0.x a 8.0.z está apoyado. MySQL 8.0.11 es la primera versión de estado GA dentro de la serie de versiones MySQL 8.0.
Qué actualiza el proceso de actualización de MySQL
La instalación de una nueva versión de MySQL puede requerir la actualización de estas partes de la instalación existente: * Paso 1: Actualización del diccionario de datos * Paso 2: Actualización del servidor
La siguiente lista muestra los comandos de actualización anteriores a MySQL 8.0.16 y los comandos equivalentes para MySQL 8.0.16 y versiones posteriores:
-
Realice una actualización normal (pasos 1 y 2 según sea necesario):
- Antes de MySQL 8.0.16: [ mysqld ] seguido de [ mysql_upgrade ]
- A partir de MySQL 8.0.16: [ mysqld ]
-
Realice solo el paso 1 según sea necesario:
-
Antes de MySQL 8.0.16: no es posible realizar todas las tareas de actualización descritas en el paso 1 excluyendo las descritas en el paso 2. Sin embargo, puede evitar actualizar los esquemas de usuario y el esquema
sysusando [ mysqld ] seguido de [ mysql_upgrade ] con las opciones [--upgrade-system-tables] y [--skip-sys-schema]. -
A partir de MySQL 8.0.16: [mysqld --upgrade = MINIMAL]
-
-
Realice el paso 1 según sea necesario y fuerce el paso 2:
-
Antes de MySQL 8.0.16: [ mysqld ] seguido de [mysql_upgrade --force]
-
A partir de MySQL 8.0.16: [mysqld --upgrade = FORCE]
-
### Actualización con el repositorio APT de MySQL
-
Antes de realizar cualquier actualización a MySQL, siga cuidadosamente las instrucciones en [Actualización de MySQL]. Entre otras instrucciones discutidas allí, es especialmente importante hacer una copia de seguridad de su base de datos antes de la actualización .
-
Las siguientes instrucciones asumen que MySQL se ha instalado en su sistema usando el repositorio APT de MySQL; si ese no es el caso, siga las instrucciones que se dan en [Reemplazo de una distribución nativa de MySQL usando el repositorio APT de MySQL] o [Reemplazo de un servidor MySQL instalado por una descarga directa del paquete deb]. También tenga en cuenta que no puede usar el repositorio APT de MySQL para actualizar una distribución de MySQL que haya instalado desde un repositorio de software no nativo (por ejemplo, de MariaDB o Percona).
-
Aseguresé de que tiene el repositorio APT de MySQL en la lista de repositiorios de su sistema
- Asegurarte de que tienes la información del paquete más actualizado
terminal> sudo apt-get update - Utilice el comando:
terminal> apt-get install mysql-server
terminal> apt-get install package-name
terminal> dpkg -l | grep mysql | grep ii
Copia de seguridad
Para evitar la pérdida de datos, siempre haga una copia de seguridad de su base de datos antes de intentar reemplazar su instalación de MySQL usando el repositorio APT de MySQL. Más adelante veremos como realizar estas copias.