2009-11-10 6 views
6

Para reinstalar mi base de datos MySQL, he eliminado /etc/my.cnfMySQL: ¿cómo veo qué archivos de configuración se utilizan?

Pero, ¿cuáles son las configuraciones predeterminadas de MySQL? ¿Y cómo veo qué archivos de configuración están en uso?

Veo que mysql --help me da una lista de la configuración actual. Pero mi verdadero problema aquí es que quiero modificar local-infile y max_allowed_packet.

El texto de ayuda también indica que lee de los siguientes archivos: /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf. Pero ninguno de ellos existe:

> cat /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf 
cat: /etc/my.cnf: No such file or directory 
cat: /etc/mysql/my.cnf: No such file or directory 
cat: /opt/local/etc/mysql5/my.cnf: No such file or directory 
cat: /Users/jesper/.my.cnf: No such file or directory 

¿Puedo crear un nuevo archivo de configuración que solo contenga estas configuraciones? Y lo más específico: ¿Cómo puedo ver qué archivos de configuración están en uso?

Aquí está la salida de mysql --help

> mysql --help 
mysql Ver 14.14 Distrib 5.1.40, for apple-darwin10.0.0 (i386) using readline 6.0 
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc. 

[...] 

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf 
The following groups are read: mysql client 
The following options may be given as the first argument: 
--print-defaults Print the program argument list and exit 
--no-defaults  Don't read default options from any options file 
--defaults-file=# Only read default options from the given file # 
--defaults-extra-file=# Read this file after the global files are read 

Variables (--variable-name=value) 
and boolean options {FALSE|TRUE} Value (after reading options) 
--------------------------------- ----------------------------- 
auto-rehash      TRUE 
character-sets-dir    (No default value) 
column-type-info     FALSE 
comments       FALSE 
compress       FALSE 
debug-check      FALSE 
debug-info      FALSE 
database       (No default value) 
default-character-set    latin1 
delimiter       ; 
vertical       FALSE 
force        FALSE 
named-commands     FALSE 
ignore-spaces      FALSE 
local-infile      FALSE 
no-beep       FALSE 
host        (No default value) 
html        FALSE 
xml        FALSE 
line-numbers      TRUE 
unbuffered      FALSE 
column-names      TRUE 
sigint-ignore      FALSE 
port        0 
prompt       mysql> 
quick        FALSE 
raw        FALSE 
reconnect       TRUE 
socket       (No default value) 
ssl        FALSE 
ssl-ca       (No default value) 
ssl-capath      (No default value) 
ssl-cert       (No default value) 
ssl-cipher      (No default value) 
ssl-key       (No default value) 
ssl-verify-server-cert   FALSE 
table        FALSE 
user        (No default value) 
safe-updates      FALSE 
i-am-a-dummy      FALSE 
connect_timeout     0 
max_allowed_packet    16777216 
net_buffer_length     16384 
select_limit      1000 
max_join_size      1000000 
secure-auth      FALSE 
show-warnings      FALSE 
+1

Solo para especificar: consideraré esta pregunta cuando reciba una respuesta a esto: ¿cómo veo qué archivos de configuración están en uso? –

Respuesta

4

Por lo que sé, no hay forma de ver qué archivo de configuración MySQL leer cuando se inició. Si no existe ninguno, simplemente usa los valores predeterminados con los que se compiló. Nota, lea siendo la palabra operativa, MySQL no mantiene el archivo de configuración abierto más de lo necesario para analizarlo.

Si usted es curiosidad morbosa para verificar el orden de los archivos que revisa para, simplemente podría ejecutar MySQL a través strace y tenga en cuenta los access() llamadas al sistema. Esto le mostrará el orden para el cual fue compilado para buscar su configuración, y un montón de cosas que realmente no quería saber.

+0

Así que, supongo que esto significa que no hay una manera justa de ver qué archivos ha leído su configuración desde –

+0

@Jesper Rønn-Jensen - Sin forma convencional (como lo proporciona mysql), sin embargo, no debería ser demasiado difícil de entender fuera con otros métodos. Como señaló culebrón, local-inifile debería forzar a mysql a leer ./my.cnf si existe, o ~/my.cnf, entonces el sistema falla. Solo strace te dirá si, de hecho, está haciendo eso en el orden que anuncia, aunque no tengo motivos para sospechar que no lo será. –

+0

Estoy aceptando esto como la respuesta más adecuada. Muchas gracias por tomarse el tiempo para responder. La recompensa es más merecida :) –

3

Prueba este my.cnf o cargarlo con un parámetro de línea de comandos:

[mysqld] 
max_allowed_packet = 16M 
[client] 
local-infile=1 

Es importante que los parámetros eran en las secciones apropiadas.

Según tengo entendido, MySQL lee los archivos en la secuencia que ha escrito y luego utiliza los valores predeterminados que se establecieron en la compilación.

+0

Así que supongo que la respuesta es: ¿No hay forma de ver qué archivos de configuración usa MySql? –

0

Los archivos de configuración listados solo se leen si existen, obviamente. ¿Has intentado leer /etc/my.cnf o alguna de las otras que son y no en tu directorio de inicio como raíz? Me sorprende que ninguno de ellos esté allí.

De todos modos, puede crear uno de los archivos, por ejemplo, ~/.my.cnf, e incluir el código que acaba de publicar culebrón.

+0

Supongo que la respuesta es: ¿no hay forma de ver qué archivos de configuración usa MySql? –

Cuestiones relacionadas