Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
f1:mysql_server [2018/11/09 14:43] lmachucaf1:mysql_server [2023/10/12 12:47] (actual) lmachuca
Línea 1: Línea 1:
-====== Instalar MySQL Server ======+====== Instalación Servicio MySQL ======
  
-Proceso de instalación de MySQL Server. Obviamente requieren tener en el equipo el permiso para instalar software.+Proceso de instalación de MySQL Server. Obviamente requieren tener en el equipo el permiso para instalar software y haber seguido los pasos en la instalación de servidor base para configurar el gestor de paquetes. 
 + 
 +===== Resumen ===== 
 + 
 +Los servicios de MySQL para Helpcom se instalan usando por defecto el motor **MariaDB**, que es la versión "community" de MySQL con licencia para poder distribuirla a los clientes.  
 + 
 +Para ser usable con Helpcom, se debe ajustar el servicio de BDD con ciertas configuraciones. Las más importantes incluyen: 
 + 
 +  * Optimizar el tiempo de commit y escritura al disco duro. 
 +  * Abrir el puerto a la red local, de modo de poder conectarnos desde las aplicaciones cliente. 
 +  * Optimizar algunos recursos como memoria o canidad de conexiones disponibles, para el uso local. 
 + 
 +La paquetería de Helpcom incluye un archivo de configuración que ve la mayoría de estas variables.
  
 ===== Linux ===== ===== Linux =====
  
-<note warning>El servidor de MySQL por defecto en **Debian 9** es **MariaDB 10.1**. Para habilitar MySQL Server, seguir los pasos en la sección [[#Debian9 MySQL]] antes de continuar con esta sección.</note>+**Descarga Oficial**
  
-Instalar desde el gestor de paquetes de la distribución. Por ejemplo en Debian:+  * desde el gestor de paquetes de la distribución
  
-  # Debian 7 u 8  --MySQL 5.+<note>El tutorial actual considera la instalación del servidor //MariaDB// 10.2 o posterior para Debian 9 en adelante.
-  apt-get install mysql-server +
-  # Debian 9 con las notas arriba  --> MySQL 5.7 +
-  apt-get install -t unstable mysql-server +
-  # Ubuntu 16.04 o posterior --> MySQL 5.+
-  apt-get install mysql-server +
  
-(Tomar nota en los mensajes de instalación que la versión que se instala corresponda a la que necesitamos)+Para habilitar un servidor de MySQL = 5.5, ver [[MySQL Server Legacy]]. 
 +</note>
  
 +Se asume aquí que se parte desde [[:Instalación Linux Servidor]] y que se ha completado la instalación, posinstalación y primer inicio, incluyendo tener activado el repositorio de Helpcom.
  
-El sistema preguntará la **contraseña del usuario ''root'' de mysql**.+Instalar desde el gestor de paquetes de la distribuciónEl proceso por defecto instala MariaDB:
  
-El archivo de configuración resultante es por defecto ''/etc/mysql/my.cnf''el árbol de la base de datos está guardado por defecto en ''/var/lib/mysql''.+  # Debian 9 en adelante paquetería base de Helpcom 
 +  apt install helpcom-servidor-mysql 
 +  # Si se queja de ambigüedades, se puede usar: 
 +  apt install helpcom-servidor-base mariadb-server mariadb-client 
 +   
 +  # Ubuntu 16.04 a 18.04 --> MySQL 5.7 
 +  apt install mysql-server helpcom-servidor-mysql 
 +   
 +  # Ubuntu 20.04 en adelante 
 +  apt install helpcom-servidor-mysql 
 + 
 +El archivo de configuración resultante es por defecto ''/etc/mysql/my.cnf''habrá un árbol de directorios con archivos de configuración en ''/etc/mysql/mariadb.conf.d/'' (MariaDB 10.3 en adelante) o ''/etc/mysql/mysql.conf.d/'' (MySQL; MariaDB hasta 10.2). Un archivo de configuración ''/etc/mysql/my.helpcom.cnf'' de prueba se agrega a la carpeta base que puede copiarse al destino decuado y modificarse. 
 + 
 +El árbol de la base de datos está guardado por defecto en ''/var/lib/mysql''. Ante cualquier duda de cómo configurar los archivos necesarios que esta guía no resuelva, **leer la documentación oficial** de MariaDB / MySQL.
  
 ====Postinstalación==== ====Postinstalación====
-Los siguientes elementos deben configurarse en el servidor **antes** de crear las primeras bases de datos e ingresar datos:+ 
 +Los siguientes elementos deben configurarse en el servidor **antes** de crear las primeras bases de datos e ingresar datos. Como ''root'':
  
 1.- Detener el servicio. 1.- Detener el servicio.
Línea 30: Línea 53:
     service mysql stop     service mysql stop
  
-2.- Editar ''my.cnf'' o el archivo de configuración equivalente (depende de la versión de Debian y de MySQL; revisar las documentaciones oficiales correspondientes) y agregar las siguientes directivas a la sección ''[mysqld]'':+2.- Ir a la carpeta de configuración de MySQL y copiar el archivo ''my.helpcom.cnf'' a la carpeta adecuada. Por ejemplo
  
-<file my.cnf.agregar> +<code bash> 
-[mysqld] +cd /etc/mysql 
-# Agregar los siguientes campos:+cp my.helpcom.cnf ./maradb.conf.d/  
 +</code>
  
-# Permitir conexión desde fuera: +3.Editar el archivo resultante con las configuraciones que deseamos.
-bind-address = * +
-# Puerto de conexión: +
-port = 3306 +
-# Modelo de almacenamiento de binarios +
-innodb_file_per_table = 1 +
-# Modelo de sincronización en disco +
-innodb_flush_method = O_DIRECT+
  
-</file>+<code bash> 
 +nano mariadb.conf.d/my.helpcom.cnf 
 +</code> 
 + 
 +Esto debe mostrar algunas configuraciones base para el servidor. Podemos aprovechar de configurar lo que necesitemos. 
 + 
 +Guardar y salir.
  
 3.- Reiniciar el servicio: 3.- Reiniciar el servicio:
Línea 51: Línea 74:
     service mysql start     service mysql start
  
-4.- Agregar el siguiente paquete a la instalación:+A este punto, antes de continuar, conviene chequear las **[[#Notas]]** para ver si alguna de ellas aplica a la configuración actual. En particular para MySQL 5.7 es necesario chequear la sección "Usuario no puede hacer login a root".
  
-  apt-get install mysql-utilities+==== Carga de Credenciales ==== 
 +Si se ha seguido la paquetería de Helpcom, es bastante fácil cargar las credenciales por defecto (los usuarios "helpcom_db" y "helpcom-admin"). Para esto, aún como root:
  
 +<code bash>
 +mysql < /usr/local/etc/helpcom/mysql-permisos0.sql
 +</code>
  
 ===== Windows ===== ===== Windows =====
 +
 +<note warning> Configuración no recomendada. Windows no es bueno para servidores, ni menos cuando al mismo tiempo se usa como caja. Es mejor hacer una [[:instalación linux servidor]].</note>
 +
 +**Descarga Oficial**:
 +
 +  * [[https://mariadb.org/mariadb/all-releases/#10-6|MariaDB Server All Releases]] (apunta a 10.6 pero se puede escoger versiones anteriores)
 +    * Escoger "Windows", "MSI Package".
 +
  
 [{{ :f1:mysqlserverwindows-1.png?nolink&400 |Entrada del Instalador de MySQL Server}}] [{{ :f1:mysqlserverwindows-1.png?nolink&400 |Entrada del Instalador de MySQL Server}}]
  
-Para instalar se usa uno de los instaladores de MySQL Server, "Essentials" o "Community" dependiendo de la versión de MySQL.+Para instalar se usa uno de los instaladores de MariaDB Server.
  
 Se escogen en general las siguientes opciones de instalación: Se escogen en general las siguientes opciones de instalación:
Línea 95: Línea 130:
  
 # Permitir conexión desde fuera: # Permitir conexión desde fuera:
 +# (chequear también Firewall de Windows)
 bind-address = * bind-address = *
 # Puerto de conexión: # Puerto de conexión:
Línea 112: Línea 148:
     MySQL → menú contextual → Iniciar     MySQL → menú contextual → Iniciar
  
 +A este punto, antes de continuar, conviene chequear las **[[#Notas]]** para ver si alguna de ellas aplica a la configuración actual. En particular para MySQL 5.7 es necesario chequear la sección "Usuario no puede hacer login a root".
  
 ===== Configuración Inicial ===== ===== Configuración Inicial =====
  
-Completados estos pasos y ya andando el servicio de MySQL lo que queda es **[[f1:MySQL Server Permisos|establecer los usuarios y permisos]]**.+Completados estos pasos y ya andando el servicio de MySQL lo que queda es **[[f1:MySQL Server Permisos|establecer los usuarios y permisos]]**. Esto permite:  
 + 
 +  - Configurar el acceso para el usuario ''root''
 +  - Abrir el puerto para que otros equipos cliente puedan conectarse. 
 +  - Crear los usuarios y privilegios base de Helpcom. 
 + 
 +==== Carga de Credenciales ==== 
 + 
 +La carga de credenciales en Windows debe hacerse manualmente, ya que Windows no tiene una gestión de paquetes que lo permita.
  
  
 ===== Desinstalar ===== ===== Desinstalar =====
-Para desinstalar **correctamente** ver los pasos en [[.MySQL Server Desinstalar]].+Para desinstalar **correctamente** ver los pasos en [[.MySQL Server Desinstalar]], o seguir la documentación oficial.
  
 ===== Notas ===== ===== Notas =====
-====Debian9 MySQL====+====Windows I/O Error en Equipos de 64-bit====
  
-1.- Crear el siguiente archivo de repositorio:+<note info>:!: Para: Equipos con Windows 8 en adelante 64-bit, en particular notebooks, cuando instalan MySQL 5.5 o anterior.</note>
  
-  nano /etc/apt/sources.list.d/debian-unstable.list+Este caso afecta particularmente a clientes como Daos.
  
-2.- Colocar en el archivo la siguiente línea:+FIXME Pendiente
  
-  deb http://deb.debian.org/debian/ unstable main+====root tiene contraseña====
  
-3.- Guardar y salir.+**Síntoma**: Windows MySQL Setup Wizard dice que root tiene contraseña
  
-4.- Crear el siguiente archivo:+<note info>:!: Para: Equipos con Windows que ya tenían una instalación previa de MySQL Server.</note>
  
-  nano /etc/apt/preferences.d/unstable+Si el equipo ya tenía una instalación de MySQL Server previa, tanto el servicio de Windows como el binario de la base de datos guardan información de la cuenta y permisos anteriores de ''root@localhost'', con los cuales no es posible para el instalador generar los permisos o usuarios nuevos.
  
-Con el siguiente contenido:+Para solucionar este problema es necesario seguir los siguientes pasos **en orden**:
  
-<code+  - Detener el servicio de MySQL. 
-Package: * +  - Desinstalar MySQL server [[mysql server desinstalar|como se indica en la página de desinstalación]], **incluyendo** borrar los archivos de data. 
-Pin: release a=unstable +  - Borrar el directorio de MySQL Server en //Program Files//. 
-Pin-Priority100+  - Verificar manualmente que el servicio de MySQL está eliminado. 
 +  - Reiniciar el equipo. 
 + 
 +Luego de esto, proceder a la instalación de servidor de MySQL desde cero. 
 + 
 +====Usuario local login a root==== 
 + 
 +<note info>:!: Para: Linux con MySQL 5.7 en adelante.</note
 + 
 +Desde MySQL 5.7 (o MariaDB 10.1), el acceso a ''root'' por defecto es [[https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04/801950|por medio de un socket de UNIX]], por lo cual es necesario ser usuario ''root'' en el shell para entrar al ''root'' de MySQL; para recuperar el acceso desde el usuario ''administrador'', hay dos estrategias: 
 + 
 +  crear un nuevo superusuario con acceso vía protocolo TCP. 
 +  * cambiar la autenticación del usuario ''root''
 + 
 +**a) Crear un nuevo superusuario** 
 + 
 +:!: Esta estrategia se seguirá empezando con los servidores Linux que lance Helpcom desde Marzo de 2020 en adelante. 
 + 
 +La paquetería de Helpcom incluye un script que crea un usuario nuevo, ''helpcom.root'' con todos los permisos desde conexión local. Para cargar el script se ejecuta como root: 
 + 
 +  sh /usr/local/etc/helpcom/mysql-permisosroot0.sql 
 + 
 +El script pedirá una contraseña para el nuevo root y creará el usuario. 
 + 
 +La creación debiera ser equivalente al procedimiento SQL siguiente: 
 + 
 +<code mysql> 
 +CREATE USER 'helpcom.root'@'localhost' IDENTIFIED BY 'password'; 
 +GRANT ALL on *.* TP 'helpcom.root'@'localhost' WITH GRANT OPTION; 
 +GRANT SUPER TO 'helpcom.root'@'localhost' WITH GRANT OPTION; 
 +FLUSH PRIVILEGES;
  
 </code> </code>
  
-5.- Guardar y salir.+**b) Cambiar el acceso para el usuario root de MySQL**
  
-6.- Actualizar los repositorios.+Entrar a la consola de MySQL como root.
  
-  apt-get update+  # MySQL 5.7 
 +  ALTER USER root@'localhost' IDENTIFIED VIA mysql_native_password BY 'newpassword'; 
 +  FLUSH PRIVILEGES;
  
-Luego de esto [[#Linux|continuar con la instalación poner ojo a las instrucciones]].+  MariaDB 
 +  UPDATE mysql.user SET password=password('newpassword'), plugin='mysql_native_password' WHERE user='root'; 
 +  FLUSH PRIVILEGES; 
 + 
 + 
 +(Cambiar "''newpassword''") por la contraseña para el ''root'' de MySQL. 
 + 
 +Una vez ejecutados estos pasos es posible confirmar que es posible acceder a la consola de ''root'' haciendo inicio de sesión  como ''administrador'' (por ejemplo por SSH/PuTTY) y entrando a la consola de MySQL. Observar que, en el siguiente comando, puede ser necesario **especificar el host con -h**: 
 + 
 +  mysql -h localhost -u root -p 
 +  mysql -h 127.0.0.1 -u root -p 
 + 
 +:!: **Nota**: Si debido a una actualización de sistema cambia la versión de MySQL server, puede ser necesario ejecutar estos pasos nuevamente. 
 + 
 +:!: **Nota**: Al seguir este procedimiento, en Debian >= 10, los script de servicios de MySQL quedarán bloqueados  sin acceso de superusuario por tanto no se podrá iniciar o detener MySQL con als herramientas de sistema. Consultar la wiki oficial de Debian para ver cómo reestablecer los accesos los servicios. 
 + 
 + 
 +==== COLLATION por defecto desde clientes nuevos ==== 
 + 
 +<note info>:!: Para: Servidores MySQL donde el cliente puede conectarse con un ''mysqldump'' o un MySQL ODBC de una versión diferente.</note> 
 + 
 +En MySQL 5.5, algunas tablas pueden insertar o leer información en el ''COLLATION'' incorrecto cuando uno se conecta desde clientes de MySQL más nuevos, incluyendo conectores como los conectores de Eclipse o DBeaver que usan un conector más nuevo que el ODBC 5.1.  
 + 
 +Para asegurarse que las tablas se generan en el sistema con el COLLATION correcto por defecto, es necesario editar ''my.cnf'' y agregar a la sección ''[mysqld]'' una de las dos siguientes opciones: 
 + 
 +  collation-server = utf8_general_ci 
 +  collation-server = latin1_general_ci 
 + 
 +Cuál collation por defecto debe usarse depende del caso a caso; en general para Crux y Alerce debe usarse el ''utf8'', para servidores de **producción de Facturación Electrónica** debe usarse el ''latin1'', y para todo lo demás se puede escoger cualquiera mientras se sea consecuente entre clientes y servidores.
  
-</note> 
  
  
f1/mysql_server.1541774608.txt.gz · Última modificación: 2018/11/09 14:43 por lmachuca
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0