Debe instalar los paquetes mysql-client-5.1.54p0 y mysql-server-5.1.54p3. Tras instalar el servidor debe ejecutar mysql_install_db.
Inicialice el directorio donde estarán las bases de datos con
sudo /usr/local/bin/mysql_install_db
Después agregue a /etc/login.conf
:
mysql:\ :openfiles-cur=2048:\ :openfiles-max=4096:\ :tc=daemon:
que creará una clase de login ---tenga en cuenta no dejar espacios al
final de cada línea y que desde la segundan comiencen con el caracter
tabulador. A continuación regenere el archivo binario
/etc/login.conf.db
con
cd /etc sudo cap_mkdb /etc/login.conf
A continuación en /etc/rc.local
agregue:
pgrep mysqld > /dev/null if [ "$?" != 0 -a \ -x /usr/local/bin/mysqld_safe ]; then echo -n ' mysqld'; su -c mysql root -c '/usr/local/bin/mysqld_safe >/dev/null 2>&1 &' fi
y después lance el servidor como se muestra desde la línea de
comando[31] para
iniciar el servidor (los errores quedarán en
/var/mysql/
).
Después puede establecer una clave para el usuario
host
.errroot
de MySQL cuando ingresa desde
localhost
con:
/usr/local/bin/mysqladmin -u root password 'nueva-clave' /usr/local/bin/mysqladmin -u root -h Jesus.miescuela.edu.co 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
(php5-core-
y
v
php5-extensions-
)
el paquete
(v
php5-mysql-
)
v
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.
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('supercosa') where user='root'; mysql> flush privileges; mysql> exit
Vuelva a apagar el servidor y reinicielo con: /usr/local/bin/mysqld_safe &
MySQL 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
Puede emplear aplicaciones para Apache en modo
chroot
que usen bases de datos
MySQL de tres formas:
(1) Conectándose a un puerto TCP/IP donde responda
MySQL, (2) poniendo el socket de MySQL en un directorio
dentro de la jaula de Apache o (3) Corriendo MySQL en modo
chroot
.
Una vez instale mysql-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 MySQL 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 MySQL 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
Asumimos un servidor apache corriendo chroot en /var/www/ Nos proponemos instalar chroot en /var/www/ el servidor mysql.
He tomado como base el documento [SecMySQL] Este fue mi punto de partida, pero sobre la marcha hubo que añadirle cosas a este procedimiento. A continuación traduzco la parte pertinente y escribo las modificaciones en naranja.
Nota: Este procedimiento surgió para Mauricio Rivera a través de un método de ensayo y error con base en documento que explicaba como instalar el servidor mysql en un freebsd. Después de varias pruebas logré correr el servidor mysql y conectarlo a traves de apache, seguramente la configuración no es la única ni la óptima pero fue una que me funcionó.
El primer paso para volver seguro a MySQL es preparar el ambiente de cambio de directorio, ambiente en el cual el servidor MySQL irá a correr. En nuestro caso /var/www/ era el chroot.
Como en artículos previos, el sistema operativo elegido es FreeBSD 4.7. Sin embargo, los métodos presentados deberán de poder aplicarse en la mayoría de sistemas UNIX modernos.
En orden a preparar el ambiente chroot, debemos crear la siguiente estructura de directorios:
mkdir -p /var/www/dev mkdir -p /var/www/etc mkdir -p /var/www/tmp mkdir -p /var/www/var/tmp mkdir -p /var/www/usr/local/mysql/libexec
mkdir -p /var/www/usr/local/share/mysql/english mkdir -p /var/www/var/run/mysql mkdir -p /var/www/var/mysql/
The access rights to the above directories should be set as follows:
chown -R root.daemon /var/www/ chmod -R 755 /var/www/ chmod 1777 /var/www/tmp
A continuación, los siguientes archivos han sido copiados en la nueva estructura de directorio:
cp /usr/local/libexec/mysqld /var/www/usr/local/mysql/libexec/ cp /usr/local/share/mysql/english/errmsg.sys /var/www/mysql/usr/local/share/mysql/english/ cp /etc/hosts /var/www/etc/ cp /etc/host* /var/www/etc/ cp /etc/resolv.conf /var/www/etc/ grep mysql /etc/group > /var/www/etc/group grep mysql /etc/master.passwd > /var/www/etc/master.passwords grep mysql /etc/passwd > /var/www/etc/passwd
De los archivos:
/var/www/etc/passwords
y
/var/www/etc/group
debemos eliminar todas las líneas excepto las de la cuenta de
mysql (este es _mysql). Esto ya se preparo con el grep anteriro. Luego,
debemos construir la base de datos de contraseñas:
cd /var/www/etc pwd_mkdb -d /var/www/mysql/etc passwords rm -rf /var/www/etc/master.passwd
Igual que en el caso del servidor Apache, debemos crear un archivo de
dispositivo especial /dev/null
:
ls -al /dev/null crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null mknod /var/www/dev/null c 2 2 chown root.sys /var/www/dev/null chmod 666 /var/wwww/dev/null
Debemos de copiar la base de datos mysql, la cual contiene tablas creadas durante la instalacion de MySQL:
cp -R /var/mysql/* /var/www/var/mysql/ chown -R _mysql._mysql /var/www/var/mysql/
Ejecutamos la orden:
mysqld_safe --user=_mysql --chroot=/var/www --datadir=/var/mysql &
Comprobamos que el servidor MySQL ese corriendo:
ps -aux|grep -i mysql
Corremos el cliente mysql, tenemos decirle que use un diferente socket:
mysql -S /var/www/var/run/mysql/mysql.sock
aseguramos el acceso al servidor mysql con una clave:
mysqladmin -S /var/www/var/run/mysql/mysql.sock password 'clave_secreta'
Hacemos que el servidor mysql arranque cada vez que arranque el servidor, agregamos la anterior linea al final del archivo /etc/rc.local:
mysqladmin -S /var/www/var/run/mysql/mysql.sock password 'clave_secreta'
Instalar paquete principal de PHP:
pkg_add php4-core-4.3.5RC3.tgz
Crear directorios donde iran las librerias de php para apache:
mkdir -p /chroot/usr/local/lib/php
Copiar la libreria libphp4.so al directorio correspondiente en el /chroot:
cp -p /usr/local/lib/php/libphp4.so /chroot/usr/local/lib/php/
Instalar paquete php4-mysql-4.3.5RC3:
pkg_add php4-mysql-4.3.5RC3.tgz
Nota: A modo de prueba copié ciertas librerias mysql a chroot, que pueden necesitar en el chroot:
mkdir -p /chroot/usr/local/lib/mysql/ cp -p /usr/local/lib/mysql/* /chroot/usr/local/lib/mysql/
Referencias:
Una explicación de algo de la instalación y el uso de MySQL en OpenBSD: http://www.sancho2k.net/filemgmt_data/files/mysql_notes.html
El manual de MySQL: http://www.mysql.com/documentation/mysql/bychapter/index.html
Ayuda para cambiar clave de root en sistemas Linux: http://www.netadmintools.com/art90.html
[31] mysqld_safe
se encargará de iniciar el servidor desde el usuario
_mysql
, grupo _mysql
creados automáticamente durante la instalación del paquete.