Tabla de Contenidos

Instalación Servicio MySQL

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:

La paquetería de Helpcom incluye un archivo de configuración que ve la mayoría de estas variables.

Linux

Descarga Oficial:

El tutorial actual considera la instalación del servidor MariaDB 10.2 o posterior para Debian 9 en adelante.

Para habilitar un servidor de MySQL = 5.5, ver MySQL Server Legacy.

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.

Instalar desde el gestor de paquetes de la distribución. El proceso por defecto instala MariaDB:

# 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, y 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

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.

  service mysql stop

2.- Ir a la carpeta de configuración de MySQL y copiar el archivo my.helpcom.cnf a la carpeta adecuada. Por ejemplo:

cd /etc/mysql
cp my.helpcom.cnf ./maradb.conf.d/ 

3.- Editar el archivo resultante con las configuraciones que deseamos.

nano mariadb.conf.d/my.helpcom.cnf

Esto debe mostrar algunas configuraciones base para el servidor. Podemos aprovechar de configurar lo que necesitemos.

Guardar y salir.

3.- Reiniciar el servicio:

  service mysql start

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

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:

mysql < /usr/local/etc/helpcom/mysql-permisos0.sql

Windows

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.

Descarga Oficial:

Entrada del Instalador de MySQL Server

Para instalar se usa uno de los instaladores de MariaDB Server.

Se escogen en general las siguientes opciones de instalación:

Una vez que el servidor esté instalado, el software ofrece la opción de configurarlo vía la herramienta de configuración del servicio (“Service Wizard”). Opciones de configuración:

El archivo de configuración resultante es por defecto %PROGRAMFILES%\MySQL Server\(versión)\my.ini y el árbol de la base de datos está guardado por defecto en %PROGRAMDATA%\MySQL Server.

Postinstalación

Los siguientes elementos deben configurarse en el servidor antes de crear las primeras bases de datos e ingresar datos:

1.- Detener el servicio.

  Ejecutar → services.msc
  MySQL → menú contextual → Detener

2.- Editar my.ini o el archivo de configuración equivalente (depende de la versión de MySQL; revisar las documentaciones oficiales correspondientes) y agregar las siguientes directivas a la sección [mysqld]:

[mysqld]
# Agregar los siguientes campos:
 
# Permitir conexión desde fuera:
# (chequear también Firewall de Windows)
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 = normal

:!: Poder guardar los cambios en el archivo puede requerir iniciar el editor de texto o el explorador con privilegios de Administrador de Sistema.

3.- Reiniciar el servicio:

  Ejecutar → services.msc
  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

Completados estos pasos y ya andando el servicio de MySQL lo que queda es establecer los usuarios y permisos. Esto permite:

  1. Configurar el acceso para el usuario root.
  2. Abrir el puerto para que otros equipos cliente puedan conectarse.
  3. 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

Para desinstalar correctamente ver los pasos en .MySQL Server Desinstalar, o seguir la documentación oficial.

Notas

Windows I/O Error en Equipos de 64-bit

:!: Para: Equipos con Windows 8 en adelante 64-bit, en particular notebooks, cuando instalan MySQL 5.5 o anterior.

Este caso afecta particularmente a clientes como Daos.

FIXME Pendiente

root tiene contraseña

Síntoma: Windows MySQL Setup Wizard dice que root tiene contraseña

:!: Para: Equipos con Windows que ya tenían una instalación previa de MySQL Server.

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.

Para solucionar este problema es necesario seguir los siguientes pasos en orden:

  1. Detener el servicio de MySQL.
  2. Desinstalar MySQL server como se indica en la página de desinstalación, incluyendo borrar los archivos de data.
  3. Borrar el directorio de MySQL Server en Program Files.
  4. Verificar manualmente que el servicio de MySQL está eliminado.
  5. Reiniciar el equipo.

Luego de esto, proceder a la instalación de servidor de MySQL desde cero.

Usuario local login a root

:!: Para: Linux con MySQL 5.7 en adelante.

Desde MySQL 5.7 (o MariaDB 10.1), el acceso a root por defecto es 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:

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:

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;

b) Cambiar el acceso para el usuario root de MySQL

Entrar a la consola de MySQL como root.

# MySQL 5.7
ALTER USER root@'localhost' IDENTIFIED VIA mysql_native_password BY 'newpassword';
FLUSH PRIVILEGES;
# 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 y 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 a los servicios.

COLLATION por defecto desde clientes nuevos

:!: Para: Servidores MySQL donde el cliente puede conectarse con un mysqldump o un MySQL ODBC de una versión diferente.

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.