mysql - instalar - Determine qué archivo de configuración se está utilizando
mysql workbench (13)
Acabo de hacer una prueba rápida en ubuntu:
mysql-server instalado, que creó /etc/mysql/my.cnf
mysqld --verbose --ayuda | grep -A 1 "Opciones predeterminadas"
110112 13:35:26 [Nota] El complemento ''FEDERATED'' está deshabilitado.
Las opciones predeterminadas se leen de los siguientes archivos en el orden dado: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
crearon /etc/my.cnf y /usr/etc/my.cnf, cada uno con un número de puerto diferente
se reinició mysql - estaba usando el número de puerto establecido en /usr/etc/my.cnf
Mientras tanto, se encontró la opción --defaults-file para mysqld. Si especifica un archivo de configuración allí, solo se usará ese, independientemente de lo que devuelva / usr / sbin / mysqld --verbose --help | grep -A 1 "Opciones predeterminadas"
¿Existe un comando para determinar qué archivo de configuración MySQL 5.0 está usando actualmente?
Algunos servidores tienen múltiples versiones de MySQL instaladas y configuradas. Asegúrese de que está trabajando con la versión correcta que se ejecuta con un comando de Unix de:
ps -ax | grep mysql
En caso de que esté ejecutando mac esto también se puede lograr mediante:
sudo dtruss mysqld 2>&1 | grep cnf
Estoy en Windows y he instalado la versión más reciente de la comunidad MySQL 5.6
Lo que hice para ver qué archivo de configuración usaba fue ir a Herramientas administrativas> Servicios> MySQL56> Hacer clic con el botón derecho> Propiedades y verificar la ruta al archivo ejecutable:
"C: / Archivos de programa / MySQL / MySQL Server 5.6 / bin / mysqld" --defaults-file = "C: / ProgramData / MySQL / MySQL Server 5.6 / my.ini" MySQL56
Lo encontré realmente útil:
- Encuentre el proceso MySQL en Servicios en
Control Panel -> Administration Tools
- Haga clic con el botón derecho del mouse y elija
Properties
- Haga clic y seleccione la
Path to executable
acceso alPath to executable
y vea si contiene la ruta demy.ini/my.cfg
Para las personas que ejecutan Windows Server con mysql como servicio, una manera fácil de descubrir qué archivo de configuración está ejecutando es abrir el panel de control de servicios, encontrar su servicio mysql (en mi caso ''MYSQL56''), hacer clic derecho y hacer clic en Propiedades . A continuación, desde aquí puede verificar la "Ruta al ejecutable", que debería tener un conmutador defaults-file
que apunta a su archivo de configuración.
Si ejecuta mysql --verbose --help | less
mysql --verbose --help | less
le informará sobre la línea 11 qué archivos .cnf
buscará.
También puede hacer mysql --print-defaults
para mostrarle cómo se usarán los valores de configuración. Esto también puede ser útil para identificar qué archivo de configuración está cargando.
Si está en Windows, puede usar el procmon Sysinternals. Ábralo y configure los filtros de esta manera, luego haga clic en "Agregar". Ahora procmon controlará mysqld.
Ahora inicia tu servidor mysql como siempre. Procmon capturará las operaciones de fondo de mysql. Busque "mi". en el panel de resultados del procmon, encontrará algo como lo siguiente:
Está claro que mysql busca una lista de archivos de configuración por turno. En mi caso, encontró C:/mysql-5.7.19-winx64/my.cnf
éxito, así que está usando este.
Tomado del fantástico libro O''Reilly de "Alto Rendimiento MySQL":
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
Una alternativa es usar
mysqladmin variables
mysqld --help --verbose es peligroso. ¡Usted puede sobrescribir fácilmente el archivo pidfile para ejecutar la instancia! úsalo con --pid-file = XYZ
Ah, y realmente no puedes usarlo si tienes más de 1 instancia ejecutándose. Solo le mostrará el valor predeterminado.
Muy buen artículo al respecto:
Si está en Linux, inicie el ''mysqld'' con strace
, por ejemplo, strace ./mysqld
.
Entre todas las otras llamadas al sistema, encontrará algo como:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
Entonces, como puede ver ... enumera los archivos .cnf, que intenta usar y finalmente usa.