Problemas Comunes MYSQL

5
Problemas relacionados con la instalación de MySQL Problemas al enlazar a la biblioteca de clientes MySQL Cómo 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 librería cliente de MySQL, usted podría obtener errores de referencias no definidas para los símbolos 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' Debería ser capaz de resolver este problema añadiendo -Ldir_path -lmysqlclient al final de su comando de enlace, donde dir_path representa la ruta del directorio donde la librería cliente está situada. Para determinar el directorio correcto, utilice este comando: shell> mysql_config --libs La salida de mysql_config podría indicar otras librerías que deberían ser especificadas en el comando de enlace también. Si obtiene errores de undefined reference en las funciones uncompress o compress, intente añadir -lz al final de su comando de enlace e intente de nuevo.

description

problemas

Transcript of Problemas Comunes MYSQL

Page 1: Problemas Comunes MYSQL

Problemas relacionados con la instalación de MySQL

Problemas al enlazar a la biblioteca de clientes MySQL Cómo 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 librería cliente de MySQL, usted podría obtener errores de referencias no definidas para los símbolos 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'

Debería ser capaz de resolver este problema añadiendo -Ldir_path -lmysqlclient al final de su comando de enlace, donde dir_path representa la ruta del directorio donde la librería cliente está situada. Para determinar el directorio correcto, utilice este comando:

shell> mysql_config --libs

La salida de mysql_config podría indicar otras librerías que deberían ser especificadas en el comando de enlace también.

Si obtiene errores de undefined reference en las funciones uncompress o compress, intente añadir -lz al final de su comando de enlace e intente de nuevo.

Si usted obtiene errores undefined reference para una función que no deberían ocurrir en su sistema, tal como connect, compruebe la página de la función en el manual y determine qué librerías debería añadir para el comando de enlace.

Podría 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 librería cliente MySQL fue compilada en un sistema que no es compatible al 100% con el suyo. En este caso, debería descargar la última distribución de código fuente de MySQL y compilar usted mismo MySQL. Consulte Sección 2.8, “Instalación de MySQL usando una distribución de código fuente”.

Page 2: Problemas Comunes MYSQL

Podría obtener errores de referencia en tiempo de ejecución cuando intenta ejecutar un programa MySQL. Si estos errores especifican símbolos que comienzan con mysql_ o indican que la librería cliente mysqlclient no puede encontrarse, significa que su sistema no puede encontrar la librería compartida libmysqlclient.so. La corrección para esto es decirle a su sistema que busque las librerías compartidas donde estén situadas. Utilice aquel de los siguientes métodos que sea apropiedo para su sistema:

Añada la ruta al direcotorio donde se encuentre libmysqlclient.so a la variable de entorno LD_LIBRARY_PATH.

Añada la ruta al directorio donde libmysqlclient.so se encuentra a la variable de entorno LD_LIBRARY.

Copie el archivo libmysqlclient.so a algún directorio de los que su sistema busca, como por ejemplo /lib, y actualice la información de la librería compartido ejecutando ldconfig.

Otra manera de resolver este problema es enlazando su programa de manera estática con la opción -static, o eleminando las librería dinámicas MySQL antes de enlazar su código. Antes de intentar el segundo método, usted debería asegurarse de que ningún otro programa está utilizando las librerías dinámicas.

Page 3: Problemas Comunes MYSQL

Cómo 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 más 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. Aún así, usted debería 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 (podría 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 simbólicos, necesitará también seguir estos enlaces y cambiar los directorios y archivos a los que apuntan. Podría 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 opción --user=user_name. mysqld se inicia, y entonces cambia la ejecución al usuario Unix user_name antes de aceptar ninguna conexión.

Para iniciar al servidor como el usuario dado automáticamente al inicio del sistema, especifique el nombre de usuario añadiendo una opción 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 máquina Unix no es segura, debería asignar contraseñas a las cuentas root de MySQL en las tablas de privilegios. De otra manera cualquier usuario con una cuenta de entrada a su máquina podría ejecutar el cliente mysql con una opción --user=root y realizar cualquier operación. (Es una buena idea asignar contraseñas a las cuentas MySQL en cualquier caso, pero especialmente si existen otras cuentas de entrada en la máquina del servidor.) Consulte Sección 2.9, “Puesta en marcha y comprobación después de la instalación”.

Page 4: Problemas Comunes MYSQL

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 serán 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.