3. MariaDB

A partir de OpenBSD/adJ 5.7 MariaDB remplaza a MySQL. Según https://es.wikipedia.org/wiki/MariaDB MariaDB fue iniciada por el fundador de MySQL después de que Oracle compró Sun y MySQL, pues consideraba que Oracle había hecho la compra para reducir competencia de sus bases de datos.

Debe instalar los paquetes mariadb-client-10.0.25v1 y mariadb-server-10.0.25v1. Aunque el nombre de los paquetes cambia los comandos para operarla siguen siendo los mismos. Tras instalar el servidor debe ejecutar mysql_install_db.

Inicialice el directorio donde estarán las bases de datos con

	doas /usr/local/bin/mysql_install_db

Para aumentar el límite de archivos que el usuario _mysql de clase mysql puede abrir agregue a /etc/login.conf:

	mysql:\
		:openfiles-cur=2048:\
		:openfiles-max=4096:\
		:tc=daemon:

tenga en cuenta no dejar espacios al final de cada línea y que desde la segunda línea cada una comiencen con el caracter tabulador. A continuación regenere el archivo binario /etc/login.conf.db con

	cd /etc
	doas cap_mkdb /etc/login.conf 

Después agregue mysqld a pkg_scripts en /etc/rc.conf.local. A continuación lance el servidor con:

	doas sh /etc/rc.d/mysqld start

Los errores quedarán en /var/mysql/host.err.

Después puede establecer una clave para el usuario root de MariaDB cuando ingresa desde localhost con:

	/usr/local/bin/mysqladmin -u root  password 'nueva-clave' 
	/usr/local/bin/mysqladmin -u root -pnueva-clave -h Jesus.miong.org password 'nueva-clave'
    

Después puede iniciar una sesión, crear bases de datos, crear usuarios y otorgarles privilegios.

Para apagar el servidor mysql:

	mysqladmin -u root -p shutdown
    

Si desea usar mysql con php, instale además de los paquetes básicos de php (php-core-v y php-mysql-v)

3.1. Uso básico

	mysql -u root -p 

puede crear la base de datos datos, y un usuario erfurt que la pueda administrar (i.e con todos los privilegios excepto GRANT) y con clave vsewf usando:

	CREATE DATABASE datos;
	GRANT ALL PRIVILEGES ON datos.* TO erfurt@localhost IDENTIFIED BY 'vsewf';

Algunas operaciones usuales del administrador son:

	SHOW DATABASES;

que muestra todas las bases disponibles.

	USE base1;

que permite usar la base base1.

	SHOW TABLES;

que muestra todas las tablas de la base activa.

	DESCRIBE tabla;
	SHOW CREATE TABLE tabla;

que presentan estructura de la tabla.

3.2. Cambio de la clave de administrador

Si olvida la clave de root después de haberla establecido puede cambiarla entrando a la cuenta de administrador:

  • Detenga el servidor.

  • Inicie el servidor con /usr/local/libexec/mysqld --user=root --skip-grant-tables

  • Ejecute:

    	# mysql
    	mysql> USE mysql
    	mysql> UPDATE USER SET PASSWORD=password('miclave') WHERE user='root';
    	mysql> FLUSH PRIVILEGES;
    	mysql> EXIT
    
  • Vuelva a apagar el servidor y reinicielo con: /usr/local/bin/mysqld_safe &

3.3. Recuperación y backups

MariaDB mantiene bases de datos en directorios y las tablas en archivos. No es recomendable que modifique tales archivos, al menos no, mientras el servidor esté activo.

Para sacar una copia de respaldo de todas las bases de datos con:

	mysqldump --force -p --all-databases > /respaldomysql/dump-1nov2007.sql

y posteriormente restaurarla con:

	mysql < /respaldomysql/dump-1nov2007.sql

3.4. MariaDB y servidor web con chroot

Puede emplear aplicaciones para Apache en modo chroot que usen bases de datos MariaDB de tres formas: (1) Conectándose a un puerto TCP/IP donde responda MariaDB, (2) poniendo el socket de MariaDB en un directorio dentro de la jaula del servidor web o (3) Corriendo MariaDB dentro de la jaula chroot (ver http://structio.sourceforge.net/guias/servidor_OpenBSD/mysql.html#mysql-chroot).

Para correro MariaDB dentro de A continuación documentamos como ubicar el socket de MariaDB dentro de la jaula del servidor web (/var/www/).

Una vez instale maria-server cree el directorio en el cual ubicará el socket, digamos:

	mkdir -p /var/www/var/run/mysql/
	chown _mysql:_mysql /var/www/var/run/mysql/
	chmod a+w /var/www/var/run/mysql/
	chmod +t /var/www/var/run/mysql/

y después inicie MariaDB indicando la ruta del socket con la opción --socket, por ejemplo para que el cambio se efectúe en cada inicio, edite /etc/rc.conf.local para agregar:

	mysqld_flags="--socket=/var/www/var/run/mysql/mysql.sock"

e inicie desde /etc/rc.local con:

	pgrep mysqld > /dev/null
	if [ "$?" != 0  -a X"${mysqld_flags}" != X"NO" -a \
		-x /usr/local/bin/mysqld_safe ]; then
		echo -n ' mysqld ' 
		/usr/local/bin/mysqld_safe ${mysqld_flags} &
	fi

Sus aplicaciones PHP pueden entonces conectarse con:

	$dbhost  = "localhost";
	$dbuname = "miusuario";
	$dbpass  = "miclave";
	mysql_connect($dbhost, $dbuname, $dbpass);

Tenga en cuenta también que otros binarios de MariaDB también requerirán la opción --socket=/var/www/var/run/mysql/mysql.sock al ejecutarse por ejemplo:

	mysqldump --socket=/var/www/var/run/mysql/mysql.sock  
		\-p --all-databases
	

3.5. Lecturas recomendadas

Referencias: