[+/-]
Luego de instalar MySQL en Unix, se necesita inicializar las tablas de permisos, ejecutar el servidor, y asegurarse de que éste funciona correctamente. También se podría desear que el servidor se inicie y detenga automáticamente cuando lo haga el sistema. Se deben asignar contraseñas a las cuentas en las tablas de permisos.
En Unix, las tablas de permisos se configuran mediante el programa mysql_install_db. En algunos métodos de instalación, este programa se ejecuta automáticamente.
Si se instala MySQL en Linux a partir de una distribución RPM, el servidor RPM ejecuta mysql_install_db.
Si se instala MySQL en Mac OS X a partir de una distribución PKG, el instalador ejecuta mysql_install_db.
En otro caso, será necesario ejecutar manualmente mysql_install_db.
El siguiente procedimiento describe cómo inicializar las tablas de permisos (si no se hizo anteriormente) y luego iniciar el servidor. También sugiere posibles comandos a utilizar para verificar que el servidor está accesible y en correcto funcionamiento. Para información relativa a iniciar y detener el servidor automáticamente, consulte Sección 2.9.2.2, “Arrancar y parar MySQL automáticamente”.
Luego de completar el procedimiento y tener el servidor en funcionamiento, se deberían asignar contraseñas a las cuentas creadas por mysql_install_db. Las instrucciones para hacerlo se hallan en Sección 2.9.3, “Hacer seguras las cuentas iniciales de MySQL”.
En los ejemplos mostrados, el servidor se ejecuta bajo el
identificador de usuario de la cuenta de inicio de sesión
mysql
. Se asume que dicha cuenta existe. La
cuenta mysql
puede haber sido creda
especialmente o bien originarse al cambiar el nombre de una
cuenta existente.
Posicionarse en el nivel más alto del directorio de
instalación de MySQL, representado por
BASEDIR
:
shell> cd BASEDIR
BASEDIR
muy probablemente se
reemplace por algo similar a
/usr/local/mysql
o
/usr/local
. Los siguientes pasos asumen
que se está en este directorio.
De ser necesario, ejecutar el programa mysql_install_db para establecer las tablas de permisos MySQL iniciales, las que contienen los privilegios que determinan qué usuarios están autorizados a conectarse al servidor. Habrá que ejecutarlo si se utilizó una distribución que no lo hace automáticamente.
Por lo general, mysql_install_db sólo requiere ser ejecutado la primera vez que se instala MySQL, de modo que este paso puede obviarse si se está actualizando una instalación existente. No obstante, mysql_install_db no sobreescribe ninguna tabla, por lo tanto, es seguro utilizarlo en cualquier circunstancia.
Para inicializar las tablas de permisos se utilizará uno de
los siguientes comandos, dependiendo de si
mysql_install_db se encuentra en el
directorio bin
o
scripts
:
shell> bin/mysql_install_db --user=mysql shell> scripts/mysql_install_db --user=mysql
El script mysql_install_db crea el
directorio de datos, la base de datos
mysql
que almacena todos los privilegios
para el servidor, y la base de datos test
que puede emplearse para probar MySQL. El script también
crea entradas en la tabla de permisos para la cuenta
root
y la cuenta de usuario anónimo. Las
cuentas no están protegidas por contraseña en un
principio. Una descripción de los permisos que tienen se
encuentra en Sección 2.9.3, “Hacer seguras las cuentas iniciales de MySQL”.
Brevemente, estos privilegios le permiten al usuario
root
de MySQL hacer cualquier cosa, y le
permiten a cualquier usuario de MySQL crear o utilizar bases
de datos cuyo nombre sea test
o comience
con test_
.
Es importante asegurarse de que los directorios y ficheros
de bases de datos tienen como propietario a la cuenta de
inicio de sesión mysql
, para que el
servidor tenga acceso de lectura y escritura a los mismos.
Para cerciorarse de esto, si
mysql_install_db se ejecuta mientras se
está como root
del sistema operativo,
hay que usar la opción --user
como se
muestra. En otro caso, el script se deberá ejecutar
mientras se está como usuario mysql
del
sistema operativo, en cuyo caso se puede omitir la opción
--user
.
mysql_install_db crea varias tablas en la
base de datos mysql
, incluyendo
user
, db
,
host
, tables_priv
,
columns_priv
, y func
,
entre otras. Consulte Sección 5.6, “El sistema de privilegios de acceso de MySQL”
para una descripción completa.
Si no se desea tener la base de datos
test
, se la puede eliminar con
mysqladmin -u root drop test luego de
iniciar el servidor.
Si ocurren problemas con mysql_install_db, consulte Sección 2.9.2.1, “Problemas en la ejecución de mysql_install_db”.
Hay algunas alternativas para ejecutar el script mysql_install_db que se provee con la distribución de MySQL:
Si se desea que los privilegios iniciales sean
diferentes de los establecidos por defecto, se puede
modificar mysql_install_db antes de
ejecutarlo. Sin embargo, es preferible utilizar
GRANT
y REVOKE
para modificar los privilegios
después que las tablas de permisos
se hayan creado. En otras palabras, se puede ejecutar
mysql_install_db, y posteriormente
emplear mysql -u root mysql
para
conectarse al servidor como usuario
root
de MySQL y aplicar las
sentencias GRANT
y
REVOKE
que sean necesarias.
Si se desea instalar MySQL en varios ordenadores con los
mismos privilegios, se pueden colocar las sentencias
GRANT
y REVOKE
en
un fichero y ejecutarlo como un script utilizando
mysql
después de ejecutar
mysql_install_db. Por ejemplo:
shell> bin/mysql_install_db --user=mysql shell> bin/mysql -u root < your_script_file
De este modo se evita tipear las sentencias en cada ordenador.
Es posible regenerar las tablas de permisos
completamente aunque ya estén creadas. Se puede
necesitar esto si se está aprendiendo a usar
GRANT
y REVOKE
y
se han hecho tantas modificaciones tras la ejecución de
mysql_install_db que se desea vaciar
las tablas de permisos y comenzar de nuevo.
Para regenerar las tablas de permisos, eliminar todos
los ficheros .frm
,
.MYI
, y .MYD
en el directorio que contiene la base de datos
mysql
. (Este es el directorio llamado
mysql
dentro del directorio de
datos, el cual aparece listado como el valor
datadir
cuando se ejecuta
mysqld --help.) Luego debe ejecutarse
nuevamente el script mysql_install_db
Se puede iniciar mysqld manualmente
utilizando la opción
--skip-grant-tables
e ingresar los
permisos manualmente utilizando
mysql:
shell> bin/mysqld_safe --user=mysql --skip-grant-tables & shell> bin/mysql mysql
Desde mysql, ejecutar manualmente los comandos contenidos en mysql_install_db. Al finalizar hay que asegurarse de ejecutar mysqladmin flush-privileges o mysqladmin reload para indicarle al servidor que lea nuevamente las tablas de permisos.
Nótese que al no utilizar mysql_install_db, no solamente hay que cargar manualmente el contenido de las tablas de permisos, sino que también hay que crearlas primero.
Iniciar el servidor MySQL:
shell> bin/mysqld_safe --user=mysql &
Es importante que el servidor MySQL sea ejecutado utilizando
una cuenta de sistema operativo sin privilegios (distinta a
root
). Para cerciorarse de esto, se debe
usar la opción --user
si se ejecuta
mysql_safe
habiendo iniciado sesión del
sistema operativo como root
. En otro
caso, se debería ejecutar el script mientras se ha iniciado
sesión como mysql
, en cuyo caso se puede
omitir la opción --user
.
Mayores instrucciones para ejecutar MySQL como un usuario sin privilegios se encuentran en Sección A.3.2, “Cómo ejecutar MySQL como usuario normal”.
Si se omite la creación de las tablas de permisos antes de llegar a este paso, aparecerá el siguiente mensaje en el fichero de registro de error cuando se inicie el servidor:
mysqld: Can't find file: 'host.frm'
Si ocurren otros problemas al iniciar el servidor, consulte Sección 2.9.2.3, “Arrancar y resolver problemas del servidor MySQL”.
Utilizar mysqladmin para verificar que el servidor se encuentra en ejecución. Los siguientes comandos proporcionan formas simples de saber si el servidor está activo y responde a conexiones:
shell> bin/mysqladmin version shell> bin/mysqladmin variables
La salida producida por mysqladmin version varía dependiendo de la plataforma y la versión de MySQL, pero debería ser similar a esto:
shell> bin/mysqladmin version mysqladmin Ver 8.41 Distrib 5.0.9-beta, for pc-linux-gnu on i686 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 5.0.9-beta-Max Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 14 days 5 hours 5 min 21 sec Threads: 1 Questions: 366 Slow queries: 0 Opens: 0 Flush tables: 1 Open tables: 19 Queries per second avg: 0.000
Para ver qué otras tareas pueden hacerse con
mysqladmin, se lo debe invocar con la
opción --help
.
Verificar que se pueda detener el servidor:
shell> bin/mysqladmin -u root shutdown
Verificar que se pueda reiniciar el servidor. Hacerlo mediante mysqld_safe o invocando directamente a mysqld. Por ejemplo:
shell> bin/mysqld_safe --user=mysql --log &
Si mysqld_safe fallara, consultar Sección 2.9.2.3, “Arrancar y resolver problemas del servidor MySQL”.
Ejecutar algunas pruebas sencillas para comprobar que se puede traer información desde el servidor. La salida debería ser similar a lo que se muestra aquí:
shell> bin/mysqlshow +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ shell> bin/mysqlshow mysql Database: mysql +---------------------------+ | Tables | +---------------------------+ | columns_priv | | db | | func | | help_category | | help_keyword | | help_relation | | help_topic | | host | | proc | | procs_priv | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql +------+--------+------+ | host | db | user | +------+--------+------+ | % | test | | | % | test_% | | +------+--------+------+
Hay un conjunto de pruebas de rendimiento en el directorio
sql-bench
(dentro del directorio de
instalación de MySQL) que puede utilizarse para comparar el
desempeño de MySQL en distintas plataformas. Este conjunto
de pruebas está escrito en Perl. Utiliza el módulo Perl
DBI para proporcionar una interface independiente de la base
de datos a varias bases de datos, y algunos otros módulos
adicionales de Perl también son requeridos para ejecutar
las pruebas. Se deben tener los siguientes módulos
instalados:
DBI DBD::mysql Data::Dumper Data::ShowTable
Estos módulos pueden ser obtenidos desde CPAN (http://www.cpan.org/). También, consulte Sección 2.13.1, “Instalación de Perl en Unix”.
El directorio sql-bench/Results
contiene los resultados de muchas ejecuciones a través de
diferentes bases de datos y plataformas. Para ejecutar todos
los tests, deben introducirse estos comandos:
shell> cd sql-bench shell> perl run-all-tests
Si no se encuentra el directorio
sql-bench
, probablemente se ha
instalado MySQL empleando otros ficheros RPM que no son el
RPM de código fuente (El RPM de código fuente incluye el
directorio de pruebas de rendimiento
sql-bench
) En este caso, se deberá
primero instalar el conjunto de pruebas de rendimiento antes
de poder utilizarlo. Para MySQL 5.0, hay un RPM separado con
pruebas de rendimiento llamado
mysql-bench-
que contiene el código de prueba y los datos.
VERSION
-i386.rpm
Si se posee una distribución de código fuente, también
hay pruebas en su subdirectorio tests
.
Por ejemplo, para ejecutar
auto_increment.tst
, debe ejecutarse
este comando desde el directorio de más alto nivel en la
distribución de código fuente:
shell> mysql -vvf test < ./tests/auto_increment.tst
El resultado esperado del test se encuentra en el fichero
./tests/auto_increment.res
.
En este punto, se debería tener el servidor en funcionamiento. Sin embargo, ninguna de las cuentas iniciales de MySQL tiene una contraseña, así que se les debe asignar empleando las instrucciones halladas en Sección 2.9.3, “Hacer seguras las cuentas iniciales de MySQL”.
En MySQL 5.0, el procedimiento de instalación crea zonas
horarias en la base de datos mysql
. No
obstante, se deben llenar las tablas en forma manual. Las
instrucciones para hacerlo se encuentran en
Sección 5.9.8, “Soporte de zonas horarias en el servidor MySQL”.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.