You are on page 1of 4

Problemas relacionados con la instalacin de MySQL

Problemas al enlazar a la biblioteca de clientes MySQL


Cmo ejecutar MySQL como usuario normal
Problemas con permisos de archivos

Problemas al enlazar a la biblioteca de clientes MySQL

Cuando usted enlaza un programa para utilizar la librera cliente de MySQL,


usted podra obtener errores de referencias no definidas para los smbolos
que comiencen con mysql_, tal como los que se muestran aqu:

/tmp/ccFKsdPa.o: In function `main':


/tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init'
/tmp/ccFKsdPa.o(.text+0x31): undefined reference to
`mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x57): undefined reference to
`mysql_real_connect'
/tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error'
/tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'

Debera ser capaz de resolver este problema aadiendo -Ldir_path


-lmysqlclient al final de su comando de enlace, donde dir_path representa la
ruta del directorio donde la librera cliente est situada. Para determinar el
directorio correcto, utilice este comando:

shell> mysql_config --libs

La salida de mysql_config podra indicar otras libreras que deberan ser


especificadas en el comando de enlace tambin.
Si obtiene errores de undefined reference en las funciones uncompress o
compress, intente aadir -lz al final de su comando de enlace e intente de
nuevo.
Si usted obtiene errores undefined reference para una funcin que no
deberan ocurrir en su sistema, tal como connect, compruebe la pgina de la
funcin en el manual y determine qu libreras debera aadir para el
comando de enlace.
Podra obtener errores undefined reference como el siguiente por las
funciones que no existen en su sistema:
mf_format.o(.text+0x201): undefined reference to `__lxstat'

Esto normalmente significa que su librera cliente MySQL fue compilada en


un sistema que no es compatible al 100% con el suyo. En este caso, debera
descargar la ltima distribucin de cdigo fuente de MySQL y compilar usted
mismo MySQL. Consulte Seccin 2.8, Instalacin de MySQL usando una
distribucin de cdigo fuente.

Podra obtener errores de referencia en tiempo de ejecucin cuando intenta


ejecutar un programa MySQL. Si estos errores especifican smbolos que
comienzan con mysql_ o indican que la librera cliente mysqlclient no puede
encontrarse, significa que su sistema no puede encontrar la librera
compartida libmysqlclient.so. La correccin para esto es decirle a su sistema
que busque las libreras compartidas donde estn situadas. Utilice aquel de
los siguientes mtodos que sea apropiedo para su sistema:
Aada la ruta al direcotorio donde se encuentre libmysqlclient.so a la
variable de entorno LD_LIBRARY_PATH.
Aada la ruta al directorio donde libmysqlclient.so se encuentra a la variable
de entorno LD_LIBRARY.
Copie el archivo libmysqlclient.so a algn directorio de los que su sistema
busca, como por ejemplo /lib, y actualice la informacin de la librera
compartido ejecutando ldconfig.
Otra manera de resolver este problema es enlazando su programa de
manera esttica con la opcin -static, o eleminando las librera dinmicas
MySQL antes de enlazar su cdigo. Antes de intentar el segundo mtodo,
usted debera asegurarse de que ningn otro programa est utilizando las
libreras dinmicas.

Cmo ejecutar MySQL como usuario normal


En Windows, usted puede ejecutar el servidor como un servicio de Windows
utilizando cuentas de usuario normales a partir de MySQL 4.0.17 and 4.1.2.
(Versiones ms antiguas de MySQL requieren que usted tenga derechos de
administrador. Eso fue un error introducido en MySQL 3.23.54.)
En Unix, el servidor MySQL mysqld puede iniciarse y ser ejecutado por
cualquier usuario. An as, usted debera evitar ejecutar el servidor como el
usuario Unix root, por razones de seguridad. Para ejecutar mysqld como un
usuario normal Unix sin privilegios user_name, debe hacer lo siguiente:
Pare el servidor si se est ejecutando (utilice el comando mysqladmin
shutdown).
Cambie los directorios de la base de datos y archivos, de manera que el
usuario user_name tenga privilegios para leer y escribir archivos en ellos
(podra necesitar hacerlo como usuario root en Unix):

shell> chown -R user_name /path/to/mysql/datadir

Si no hace esto, el servidor no es capaz de acceder a bases de datos o


tablas cuando se ejecuta como user_name.
Si los directorios o archivos en el directorio de datos de MySQL son enlaces
simblicos, necesitar tambin seguir estos enlaces y cambiar los
directorios y archivos a los que apuntan. Podra ser que chown -R no
siguiera los enlaces por usted.
Inicie el servidor como el usuario user_name. Si usted est utilizando MySQL
3.22 o posterior, otra alternativa es iniciar mysqld como usuario root de
Unix y utilizar la opcin --user=user_name. mysqld se inicia, y entonces
cambia la ejecucin al usuario Unix user_name antes de aceptar ninguna
conexin.
Para iniciar al servidor como el usuario dado automticamente al inicio del
sistema, especifique el nombre de usuario aadiendo una opcin user a el
grupo [mysqld] del archivo de opciones /etc/my.cnf o el archivo de opciones
my.cnf en el directorio de datos del servidor. Por ejemplo:
[mysqld]
user=user_name

Si su mquina Unix no es segura, debera asignar contraseas a las cuentas


root de MySQL en las tablas de privilegios. De otra manera cualquier usuario
con una cuenta de entrada a su mquina podra ejecutar el cliente mysql
con una opcin --user=root y realizar cualquier operacin. (Es una buena
idea asignar contraseas a las cuentas MySQL en cualquier caso, pero
especialmente si existen otras cuentas de entrada en la mquina del
servidor.) Consulte Seccin 2.9, Puesta en marcha y comprobacin despus
de la instalacin.

Problemas con permisos de archivos


Si usted tiene problemas con los permisos de archivos, la variable de
entorno UMASK puede estar especificada de manera incorrecta al inicio de
mysqld. Por ejemplo, MySQL puede devolver el siguiente mensaje de error al
crear una tabla:

ERROR: Can't find file: 'path/with/filename.frm' (Errcode: 13)

El valor por defecto de UMASK es 0660. Ustee puede cambiar este


comportamiento iniciando mysqld_safe de la siguiente manera:

shell> UMASK=384 # = 600 en octal


shell> export UMASK
shell> mysqld_safe &

Por defecto, MySQL crea las bases de datos y directorios RAID con un valor
de permiso de acceso de 0700. Usted puede modificar este comportamiento
estableciendo la variable UMASK_DIR. Si usted establece su valor, los
nuevos directorios sern creados con los valores combinados de UMASK y
UMASK_DIR. Por ejemplo, si usted quiere dar acceso de grupo a todos los
directorios nuevos, puede hacer eso:

shell> UMASK_DIR=504 # = 770 en octal


shell> export UMASK_DIR
shell> mysqld_safe &

En MySQL 3.23.25 y superiores, MySQL asume que el valor de UMASK y


UMASK_DIR est en octal si comienza por cero.

You might also like