Bienvenido(a) a Alcance Libre 28/01/2023, 04:48
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2015 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.
MySQL™ es un DBMS (DataBase Management System) o sistema de gestión de base de datos SQL (Structured Query Language o Lenguaje Estructurado de Consulta) multiusuario y multihilo con licencia GNU/GPL. Fue propiedad y patrocinio de MySQL AB, compañía fundada por David Axmark, Allan Larsson y Michael Widenius, con base de operaciones en Suecia, la cual poseía los derechos de autor de prácticamente todo el código que lo integraba. MySQL AB desarrolló y se encargó del mantenimiento de MySQL vendiendo servicios de soporte y otros valores agregados, así como también licenciamiento privativos para los desarrollos de equipamiento lógico que requieren mantener cerrado su código fuente. MySQL™ AB fue adquirido en 2008 por Sun Microsystems, que a su vez fue adquirido por Oracle Corporation en 2009.
MySQL™ es actualmente el servidor de base de datos más popular para los desarrollos a través de la red mundial, principalmente sitios de Internet. Es célebre y casi legendario, por considerarse rápido y sólido.
MariaDB™ es un proyecto derivado de MySQL™ con licencia GNU/GPLv2, desarrollado por Michael Widenius y una comunidad de desarrolladores de software libre. Se diferencia de MySQL™ en que incluye dos nuevos motores de almacenamiento: Aria —que reemplazo para MyISAM— y XtraDB —reemplazo para InnoDB. es completamente compatible con MySQL™ gracias a que utiliza las mismas órdenes, interfaces, APIs y bibliotecas, siendo su objetivo poder reemplazar de manera transparente a MySQL.
MySQL™ será reemplazado de forma transparente por MariaDB™ —una bifurcación de MySQL dirigida por Michael Widenius— en la mayoría de los distribuciones de GNU/Linux como medida para hacer frente a la mala gestión que ha realizado Oracle sobre el proyecto MySQL™.
Ejecute lo siguiente para instalar los paquetes mysql (cliente) y mysql-server (servidor):
|
Ejecute lo siguiente para instalar los paquetes mysql (cliente) y mysql-server (servidor):
|
Ejecute lo siguiente para instalar los paquetes mysql-client (cliente) y mysql (servidor):
|
Es necesario abrir el puerto 3306 por TCP (mysql), pero sólo si requiere hacer conexiones desde anfitriones remotos.
Ejecute lo siguiente si utiliza el muro cortafuegos predeterminado del sistema:
|
Habilite el puertos 3306/TCP y aplique los cambios.
Herramienta system-config-firewall habilitando el puerto 3306/TCP para MySQL.
Ejecute lo siguiente:
|
Ejecute lo siguiente para guardar los cambios.
|
O bien añada lo siguiente al archivo /etc/sysconfig/iptables:
|
Reinicie el servicio para aplicar los cambios:
|
La regla para el archivo /etc/shorewall/rules de Shorewall correspondería a lo siguiente:
|
Ejecute lo siguiente para aplicar los cambios:
|
Ejecute lo siguiente para añadir de manera permanente la regla correspondiente:
|
Reinicie el servicio para aplicar los cambios:
|
Ejecute yast usando firewall como argumento:
|
Habilite MySQL Server y aplique los cambios. Ésto abrirá todos los puertos necesarios.
Módulo de cortafuegos de YaST, en modo gráfico, habilitando el MySQL Server.
Módulo de cortafuegos de YaST, en modo texto, habilitando MySQL Server.
Ejecute lo siguiente para que SELinux permita al usuario regular establecer conexiones hacia el zócalo de MySQL™:
|
Ejecute lo siguiente para que SELinux permita al servicio conectarse a cualquier puerto distinto al 3306:
|
Si utiliza CentOS 6 o Red Hat™ Enteroprise Linux 6 con los paquetes de MariaDB™ de AlcanceLibre.org que reemplazan a MySQL™, éste utiliza un enlace simbólico en /var/log/mysqld.log que apunta hacia /var/log/mariadb/mariadb.log para reemplazar antiguo archivo de registro que utilizaba MySQL y así hacer transparente la migración. Se debe crear una política para permitir al servicio mysqld de MariaDB™ utilizar este enlace simbólico.
Genere un nuevo directorio denominado /usr/share/selinux/packages/mariadb:
|
Cambie al directorio /usr/share/selinux/packages/mariadb:
|
Descargue el archivo https://www.alcancelibre.org/linux/secrets/mariadb.te:
|
Edite el archivo recién descargado:
|
Asegúrese que éste tenga el siguiente contenido:
|
Lo anterior fue obtenido de la salida de cat /var/log/audit/audit.log|grep audit|audit2allow -m mariadb>mariadb.te en un sistema donde SELinux impedía a mariadb acceder al enlace simbólico que reemplazó al archivo de registro original de MySQL.
Genere el archivo de módulo para SELinux (mariadb.mod) ejecutando checkmodule del siguiente modo:
|
Empaquete el archivo mariadb.mod como el archivo mariadb.pp:
|
Vincule el archivo mariadb.pp obtenido con las políticas actuales de SELinux y cargue éstas en el núcleo en ejecución:
|
Una vez cargadas las nuevas políticas, se pueden eliminar los archivos mariadb.te y mariadb.mod, pues sólo será necesario conservar el archivo binario mariadb.pp.
Ejecute lo siguiente para activar el servicio en todos los niveles de ejecución:
|
Ejecute lo siguiente para iniciar por primera vez el servicio y generar la base de datos inicial:
|
Ejecute lo siguiente para reiniciar el servicio:
|
Ejecute lo siguiente para detener el servicio:
|
Ejecute lo siguiente para activar el servicio en todos los niveles de ejecución:
|
Ejecute lo siguiente para iniciar por primera vez el servicio y generar la base de datos inicial:
|
Ejecute lo siguiente para reiniciar el servicio:
|
Ejecute lo siguiente para detener el servicio:
|
Ejecute lo siguiente activar el servicio en todos los niveles de ejecución:
|
Ejecute lo siguiente para iniciar por primera vez el servicio y generar la base de datos inicial:
|
Ejecute lo siguiente para reiniciar el servicio:
|
Ejecute lo siguiente para detener el servicio:
|
El archivo /etc/my.cnf es el utilizado para establecer o cambiar opciones permanentes de MySQL. Las bases de datos se almacenan dentro del directorio /var/lib/mysql.
Root carece de contraseña después de iniciado el servicio por primera vez. Ejecute mysql_secure_installation si necesita poner en producción inmediatamente el servidor. Iniciará un asistente que le permitirá asignar la contraseña de root, eliminar el usuario anónimo y la base de datos de pruebas (test), eliminar accesos remoto y otros ajustes de seguridad importantes. Se le solicitará ingresar una inexistente contraseña actual. Sólo pulse la tecla ↵ (ENTER) y luego asigne la nueva contraseña. Responda con Y para todo lo demás.
|
En adelante será necesario añadir la opción -p a cualquier sentencia del intérprete de mandatos para mysql, mysqladmin y mysqldump para ingresar la contraseña de root y poder realizar diversas tareas administrativas.
De manera alternativa puede ejecutar mysqladmin con la opción -h con localhost como argumento, la opción -u con root y password como argumentos y la nueva contraseña entre comillas simples:
|
Siga el siguiente procedimiento en caso de que haya extraviado la contraseña de root de MySQL™.
Detenga el servicio ejecutando service mysqld stop (ALDOS, CentOS y Red Hat™ Enterprise Linux) o bien rcmysql stop (SUSE™ Linux Enterprise).
Ejecute mysqld_safe con la opción --skip-grant-tables, enviando el proceso a segundo plano:
|
Ingrese al intérprete de mandatos de MySQL™ ejecutando mysql sin argumentos u opciones:
|
Ejecute lo siguiente:
|
Salga del intérprete de mandatos de MySQL™ ejecutando lo siguiente:
|
Detenga el servicio ejecutando mysqladmin con la opción -p y shutdown como argumento. Se solicitará se ingrese la nueva contraseña asignada.
|
Inicie MySQL™ ejecutando service mysqld start (ALDOS, CentOS y Red Hat™ Enterprise Linux) o bien rcmysql start (SUSE™ Linux Enterprise).
Verifique el cambio de contraseña ejecutando mysql y la opción -p e ingrese la nueva contraseña.
|
Salga del intérprete de mandatos de MySQL™ ejecutando lo siguiente:
|
Procure memorizar la nueva contraseña asignada a root en MySQL.
Si actualizó desde una versión anterior —como sería el caso de actualizar desde MySQL™ 5.1 hacia MariaDB™ 5.5— ejecute lo siguiente:
|
Para crear una nueva base de datos, ejecute mysqladmin con create como argumento, la opción -u con root como usuario y la opción -p para indicar que se ingresará una contraseña:
|
Para eliminar una base de datos, ejecute mysqladmin con drop como argumento en lugar de create, la opción -u con root como usuario y la opción -p para indicar que se ingresará una contraseña:
|
Para respaldar una base de datos desde el anfitrión local, ejecute mysqldump con las opciones --opt (que añade automáticamente las opciones --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset y --disable-keys), la opción -u con el nombre de usuario a utilizar, la opción -p para indicar que se ingresará una contraseña, el nombre de la base de datos, > para guardar la salida estándar (STDOUT) en un archivo y el nombre del archivo donde se guardará el respaldo. Ejemplo:
|
Para restaurar un respaldo, ejecute mysql con las opciones -u con el nombre de usuario con privilegios sobre la base de datos a restaurar, -p para indicar que se utilizará contraseña, el nombre de la base de datos a restaurar, < para indicar que la entrada estándar (STDIN) será un archivo y el nombre del archivo con el respaldo de la base de datos. Ejemplo:
|
Para respaldar todas la bases de datos hospedadas en MySQL™, ejecute mysqldump con las opciones --opt, --all-databases para indicar que se respaldarán todas la bases de datos, la opción -u con root como usuario, la opción -p para indicar que se utilizará contraseña, el símbolo > para guardar la salida estándar (STDOUT) en un archivo y el nombre del archivo donde se guardará el respaldo. Ejemplo:
|
Para restaurar todas las bases de datos a partir de un único archivo de respaldo, ejecute mysql con la opción -u con root como usuario, la opción -p para indicar que se utilizará contraseña, el símbolo < para indicar que la entrada estándar (STDIN) será un archivo y el nombre del archivo con el respaldo de todas las bases de datos. Ejemplo:
|
Ingrese al intérprete de MySQL™ como root:
|
Ejecute lo siguiente para asignar los permisos select (seleccionar), insert (insertar), update (actualizar), create (crear), alter (alterar), delete (eliminar) y drop (descartar) sobre las tablas de una base de datos al usuario prueba desde el anfitrión local:
|
Puede otorgar al usuario todos los permisos sobre la base de datos ejecutando algo similar a lo siguiente:
|
Ejecute algo similar al ejemplo anterior, pero definiendo el usuario y la dirección IP del anfitrión remoto para permitir el acceso hacia una base de datos desde un anfitrión remoto. Ejemplo:
|
Puede otorgar al usuario todos los permisos sobre la base de datos ejecutando lo siguiente:
|
Ejecute algo similar a lo anterior, pero definiendo el nombre del usuario entre comillas simples, arroba y el símbolo % entre comillas simples para permitir el acceso hacia una base de datos desde cualquier anfitrión. Ejemplo:
|
MySQL mantiene un cache de anfitriones utilizados en la memoria, la cual contiene las direcciones IP, nombres de anfitrión y errores de información asociados a éstos. El cache sólo se utiliza para conexiones TCP remotas con otros anfitriones y jamás lo utiliza para conexiones a través de la interfaz de retorno del sistema (loopback, 127.0.0.1) o conexiones hechas a través del archivo de zócalo, tubería o bien memoria compartida.
MySQL™ utiliza la dirección IP del cliente para verificar si el nombre de anfitrión de éste está en el cache de anfitriones por cada nueva conexión. Se intentará resolver el nombre de anfitrión cuando el nombre es inexistente, resolviendo primero la dirección IP, luego resolviendo el nombre, comparando el resultado de la dirección IP original para verificar que correspondan. Luego esta información es almacenada en el cache de anfitriones.
El objetivo del cache es evitar hacer nuevamente una consulta de DNS por cada conexión de cliente y evitar el almacenamiento de información de errores que ocurren en el proceso de conexión de los clientes. Cuando ocurren demasiados errores desde un anfitrión en particular y se rebasa el valor de la variable max_connect_errors (10, de modo predeterminado), se bloquea el acceso desde dicho anfitrión.
Cuando un anfitrión es bloqueado, éste sólo podrá acceder de nuevo si se reinicia el servicio o si se limpia manualmente el cache de anfitriones. Ésto último se realiza ejecutando lo siguiente desde el intérprete de mandatos del sistema:
|
Cuando se tiene un DNS muy lento, se carece de uno que resuelva los nombres de los anfitriones o bien se tiene demasiados anfitriones haciendo conexiones hacia el servidor, deshabilitar el cache de anfitriones o hacerlo más grande mejora el rendimiento considerablemente. La consecuencia de deshabilitar el cache de anfitriones es que en adelante sólo se podrán otorgar permisos de acceso y realizar conexiones utilizando direcciones IP, es decir utilizando usuario@a.b.c.d en lugar de usuario@anfitrión.dominio.tld.
Para deshabilitar el cache de anfitriones se requiere editar el archivo /etc/my.cnf:
|
Y añadir la siguiente opción en la sección [mysqld]:
|
Guarde el archivo, salga del editor del texto y reinicie el servicio para aplicar los cambios.
Si se desea hacer más grande el cache de anfitriones —cuyo valor predeterminado es 128 anfitriones— de debe cambiar el valor de HOST_CACHE_SIZE por cualquier valor entre 0 y 2048 y compilr MySQL™ desde código fuente —motivo por el cual es más práctico deshabilitar el cache de anfitriones.
Cuando se habilita el cache de consultas en memoria y se dispone de suficiente de ésta, el desempeño del servidor se incrementa considerablemente. El valor predeterminado del tamaño cache de consultas —query_cache_size— es 0, es decir está desactivado. Los valores permitidos son enteros múltiplos de 1024 (bytes). Para establecer un tamaño de cache de consultas de 32 MiB, el valor correspondiente para query_cache_size sería 33882112 bytes.
Ingrese al intérprete de MySQL™ como root:
|
Verifique el valor de la variable query_cache_size ejecutando lo siguiente:
|
La salida será similar a la siguiente:
|
Ejecute lo siguiente para cambiar el valor de query_cache_size a 32 MiB:
|
Verifique el cambio ejecutando lo siguiente:
|
La salida será similar a la siguiente:
|
Salga del intérprete de MySQL.
|
El cambio prevalecerá hasta que sea reiniciado MySQL. Edite el archivo /etc/my.cnf para que el cambio sea permanente:
|
Añada la siguiente opción en la sección [mysqld]:
|
Reinicie el servicio para aplicar los cambios:
|
Ingrese al intérprete de mandatos de MySQL™ para verificar el estado del cache de consultas:
|
Realice algunas consultas al azar hacia cualquier base de datos MySQL™ hospedada en el servidor a fin de generar algo de actividad. Sólo la primera consulta será un considerablemente más lenta que las subsecuentes. El resto de las consultas deberán ser considerablemente más rápidas.
Vuelva a ingresar al intérprete de mandatos de MySQL™ para verificar el estado del cache de consultas:
|
Ejecute lo siguiente desde el intérprete de mandatos de MySQL™:
|
La salida puede ser similar a la siguiente:
|
Algunas aplicaciones como vTigerCRM requieren se que configuré UTF-8 como codificación predeterminada. Edite el archivo /etc/my.cnf:
|
Añada las siguientes líneas resaltadas:
|
Guarde los cambios y salida del editor de texto. Reinicie el servicio para que surtan efecto los cambios.
Ejecute lo siguiente si utiliza ALDOS, CentOS o Red Hat™ Enterprise Linux:
|
Ejecute lo siguiente si utiliza SUSE™ Linux Enterprise:
|
Última Edición: 22/07/2016, 17:16| Hits: 381,754