Red de conocimiento informático - Aprendizaje de programación - Cómo iniciar el servidor mysqld en Linux

Cómo iniciar el servidor mysqld en Linux

I. Ejecutar el servidor MySQL como un usuario sin privilegios

Antes de discutir cómo iniciar el servidor MySQL, primero consideremos con qué usuario se debe ejecutar el servidor MySQL. El servidor se puede iniciar de forma manual o automática. Si se inicia manualmente, el servidor se iniciará como el usuario con el que inició sesión en Unix (Linux), es decir, si inicia sesión en Unix como paul e inicia el servidor, el servidor se ejecutará como paul si usa el comando su para cambiar a; el usuario root y luego ejecute el servidor, que se ejecutará como root. Sin embargo, en la mayoría de los casos, probablemente no desee iniciar el servidor manualmente; lo más probable es que haya programado el servidor MySQL para que se inicie automáticamente al iniciar el sistema como parte del proceso de inicio estándar, que en Unix lo realiza The; El usuario root de Unix del sistema se ejecuta y cualquier proceso que se ejecute durante este proceso se ejecuta con privilegios de root.

Debes tener dos objetivos en mente con el proceso de inicio del servidor MySQL:

Quieres que el servidor se ejecute como un usuario no root. En términos generales, desea limitar la capacidad de cualquier proceso en ejecución a menos que realmente requiera privilegios de root, lo cual MySQL no requiere.

Quieres que el servidor se ejecute siempre con el mismo usuario. Es inconveniente ejecutar el servidor como un usuario y otro usuario en otros momentos. Esto hará que los archivos y directorios que se creen en el directorio de datos tengan propietarios diferentes y puede provocar que el servidor no pueda acceder a la base de datos o la tabla, lo que puede provocar que el servidor no pueda acceder a la base de datos o a la tabla. Depende del usuario con el que esté ejecutando. Una forma de evitar este problema es ejecutar siempre el servidor como el mismo usuario.

Para que el servidor se ejecute como un usuario normal y sin privilegios, siga estos pasos:

Seleccione un usuario para ejecutar el servidor. Sin embargo, conceptualmente es más claro crear un usuario separado para las operaciones de MySQL. También puede elegir un grupo de usuarios específicamente para MySQL. Este artículo utiliza mysqladm y mysqlgrp como nombre de usuario y nombre de grupo de usuarios respectivamente.

Si instaló MySQL con su propia cuenta y no tiene derechos administrativos especiales en el sistema, lo más probable es que ejecute el servidor con su propio ID de usuario. En este caso, reemplace mysqladm y mysqlgrp con su propio nombre de inicio de sesión y grupo de usuarios.

Si instaló MySQL en RedHat Linux usando un archivo rpm, el instalador crea automáticamente una cuenta llamada mysql que puede usar para reemplazar mysqladm.

Si es necesario, utilice el proceso habitual de creación de usuarios del sistema para crear la cuenta del servidor, lo cual deberá hacer como root.

Si el servidor se está ejecutando, deténgalo.

Cambie la propiedad del directorio de datos y de cualquier subdirectorio y archivo para que el usuario de mysqladm sea propietario de ellos. Por ejemplo, si el directorio de datos es /usr/local/var, puede establecer la propiedad de mysqladm de la siguiente manera (debe ejecutar estos comandos como root):

#cd /usr/local/var

p>

#chown -R mysqladm.mysqlgrp

Modifique los permisos del directorio de datos y de cualquier subdirectorio y archivo para que solo el usuario mysqladm pueda acceder a ellos.

Si el directorio de datos es /usr/local/var, puede configurar cualquier elemento propiedad de mysqladm:

# cd /usr/local/var

# chmod -R go-rwx

Tenga en cuenta los enlaces simbólicos al configurar dependencias y esquemas para el directorio de datos y su contenido. Debe trabajar con ellos para cambiar las dependencias y modos de los archivos o directorios a los que apuntan. Esto puede resultar un poco problemático si el archivo está conectado a un directorio que no es el suyo y es posible que necesite el estado de root.

Después de completar el proceso anterior, debes asegurarte de iniciar siempre el servidor como mysqladm o root, en este último caso, asegúrate de especificar la opción --user=mysqladm, que hace que el servidor utilice su usuario La ID se cambia a mysqladm (también se aplica al proceso de inicio del sistema).

La opción --user se introdujo en MySQL 3.22, y si está utilizando una versión anterior, puede usar el comando su para indicarle al sistema que se ejecute como un usuario específico cuando ejecuta el servidor como root.

II. Iniciar el servidor

Después de determinar la cuenta que utilizará para ejecutar el servidor, puede elegir cómo organizar el inicio del servidor. Puede ejecutarlo manualmente a través de la línea de comando o automáticamente durante el inicio del sistema. Hay tres formas principales de iniciar el servidor:

Llamar directamente a mysqld.

Este es probablemente el método menos utilizado y no se recomienda su uso regular, por lo que este artículo no entrará en detalles.

Llame al script safe_mysqld.

safe_mysqld intenta determinar la ubicación del programa del servidor y los directorios de datos. Luego se llama al servidor con opciones que reflejan estos valores. safe_mysqld reubicará el dispositivo de error estándar del servidor al archivo de error en el directorio de datos y proporcionará el registro relacionado. Después de iniciar el servidor, safe_mysqld también monitorea el servidor y lo reinicia si falla. safe_mysqld se usa normalmente en sistemas Unix estilo BSD.

Si inicia sqfe_mysqld como usuario raíz, o si inicia sqfe_mysqld al iniciar el sistema, el registro de errores es propiedad del usuario raíz y puede resultar en un error de "permiso denegado" si luego intenta llamar safe_mysqld como usuario sin privilegios.

Si recibe el error "Permiso denegado", elimine el registro de errores e inténtelo de nuevo.

Llame al script mysql.server.

Este script está destinado a iniciar un servidor usando safe_mysqld.mysql.server en un sistema de inicio y parada System V, que contiene múltiples directorios que contienen scripts que se llaman cuando la máquina entra o sale de un nivel de ejecución determinado. Al llamar al script, puede utilizar los parámetros de inicio o detención para indicar si desea iniciar o detener el servidor.

El script afe_mysqld se instala en el directorio bin del directorio de instalación de MySQL, o en el directorio de scripts del directorio de lanzamiento del código fuente de MySQL. Si desea utilizarlos, debe copiarlos al directorio correspondiente.

Para sistemas estilo BSD (FreeBSD, OpenBSD, etc.), hay varios archivos en el directorio /etc que inicializan los servicios al inicio. Los nombres de estos archivos normalmente comienzan con "rc" y pueden incluir un archivo llamado "rc.local" (o similar) que inicia un servicio instalado localmente.

En dicho sistema, puede agregar la siguiente línea al archivo rc.local para iniciar el servidor (si el directorio de safe_mysqld es diferente en su sistema, simplemente cámbielo):

if [ -x / usr/local/bin/safe_mysqld ]; luego

/usr/ local/bin/safe_mysqld amp;

fi

Para sistemas estilo System V, usted Mysql.server se puede instalar en el directorio de inicio correspondiente en /etc. Si está ejecutando un sistema Linux e instaló MySQL a través de un archivo RPM, esto ya está hecho por usted; de lo contrario, instale el script en el directorio de inicio principal y coloque la conexión en el directorio de nivel de ejecución apropiado. También puede hacer que el script se inicie sólo desde la raíz.

El diseño del directorio de los archivos de inicio varía de un sistema a otro, por lo que debes verificar cómo tu sistema organiza estos archivos. Por ejemplo, en Linux PPC, los directorios son /etc/rc.d y /etc/rc.d/rc3.d, por lo que el script se puede instalar así:

#cp mysql.server / etc/rc d/init.d

#cd /etc/init.d

#chmod 500 mysql.server

#cd /etc/rc. .d/rc3 .d

#ln -s ./init.d/mysql.server S99mysql

En Solaris, el directorio principal del script es /etc/init.d y el El directorio de nivel de ejecución es /etc/rd2.d. d, por lo que el comando es el siguiente:

#cp mysql.server /etc/rc.d/init .d

#cd /etc/init.d

#chmod 500 mysql.server

#cd /etc/rc2.d

#ln -s ./init.d/mysql.server S99mysql

S99mysql El script se llamará automáticamente cuando se inicie el sistema, con los parámetros de inicio. Si usa el comando chkconfig (disponible en Linux), puede hacer que le ayude a instalar el script mysql.server sin tener que ejecutar manualmente el comando anterior.

2.1 Especificar opciones de inicio

Si desea especificar opciones de inicio adicionales cuando se inicia el servidor, puede hacerlo de dos maneras. Puede modificar el script de inicio que está utilizando (safe_mysqld o mysql.server) y especificar las opciones directamente en la línea que llama al servidor, o en un archivo de opciones. Se recomienda que, cuando sea posible, especifique opciones en un archivo de opciones globales, que generalmente se encuentra en /etc/my.cnf (Unix) o c:\my.cnf (Windows).

Algunos tipos de información no se pueden especificar a través de las opciones del servidor. Para obtener esta información, es posible que necesite modificar safe_mysqld. Por ejemplo, si su servidor no selecciona correctamente la zona horaria local y devuelve un valor de hora GMT, puede configurar la variable de entorno TZ para proporcionar una indicación. Si usa safe_mysqld o mysql.server para iniciar el servidor, puede agregar configuraciones de zona horaria en safe_mysqld.

Busque la línea que inicia el servidor y agregue el siguiente comando delante de ella:

TZ=US/Central

exportar TZ

La sintaxis de lo anterior El comando es el sistema Solaris. La sintaxis de otros sistemas puede ser diferente, consulte el manual correspondiente. Si modifica el script de inicio, tenga en cuenta que la próxima vez que instale MySQL (como actualizar a una nueva versión), sus modificaciones se perderán a menos que primero copie el script de inicio en otro lugar. Después de instalar la nueva versión, compare las versiones antigua y nueva del script para ver qué cambios deben reconstruirse.

2.2 Lista de verificación de inicio

Además de hacer que el servidor se inicie al iniciar el sistema, es posible que también desee instalar los scripts myisamchk e isamchk para verificar la lista antes de que se inicie el servidor. Es posible que esté reiniciando después de una falla del sistema y que la tabla esté dañada, y verificar antes de iniciar es una buena manera de encontrar el problema.

Tres: Detener el servidor

Para iniciar el servidor manualmente, utilice mysqladmin:

apagado de mysqladmin

Para detener el servidor automáticamente , no es necesario hacer nada especial. Los sistemas BSD normalmente detienen los servicios enviando una señal TERM a un proceso, que responde correctamente o se finaliza de forma brusca. Para los sistemas estilo System V que usan mysql.server para iniciar el servidor, el proceso de detención llamará a un script con el parámetro STOP que le indicará al servidor que finalice el servicio, asumiendo, por supuesto, que tiene mysql.server instalado.

Cuarto: Cómo recuperar el control del servidor si no puedes conectarte al servidor

En algunos casos, es posible que tengas que reiniciar manualmente el servidor porque no puedes conectarte al servidor. Por supuesto, esto es un poco contradictorio. Porque generalmente, el servidor se apaga manualmente conectándose al servidor.

En primer lugar, la contraseña raíz de MySQL puede estar configurada en un valor que no conoce, lo que puede suceder cuando cambia la contraseña, por ejemplo, si escribe un carácter de control invisible al escribir el nuevo. contraseña . También puede olvidar su contraseña.

En segundo lugar, la conexión al host local generalmente se realiza a través de un archivo de socket de dominio Unix (generalmente /tmp/mysql.sock). Esto puede suceder cuando el sistema ejecuta una tarea cron para eliminar archivos temporales en /tmp.

Si no puede conectarse porque ha perdido su archivo de socket, simplemente reinicie el servidor y vuelva a crearlo. Esto se debe a que el servidor lo recrea al iniciarse. Por ejemplo, si el servidor host es pit.snake.net, puede conectarse así:

mysqladmin -p -u root -h pit.snake.net apagado