MySQL, onde está o caminho my.cnf?

10

Eu consegui localizar meu diretório de instalação para o MySQL: /usr/local/mysql/

Onde posso encontrar o caminho my.cnfpara saber onde devo configurar o servidor? Eu tentei criar um /etc/my.cnf(como mostrado abaixo) e não teve nenhum efeito

[mysqld]

#charset
collation_server=utf8_general_ci
character_set_server=utf8
default_character_set=utf8
Webnet
fonte
Informações específicas sobre a distribuição que você está usando seriam úteis.
Tim
Certamente o debian / * buntu / rhel / cent não usaria / usr / local em uma instalação de pacote. Isso soa mais como folga ou FreeBSD.
Tim

Respostas:

20

Conforme este artigo :

A execução deste comando a partir da linha de comando / terminal mostrará onde o MySQL procurará o arquivo my.cnf nos sistemas Linux / BSD / OS X:

mysql --help | grep "Default options" -A 1 

Isso produzirá algo como isto:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

Agora você pode procurar arquivos usando a saída acima em /etc/my.cnf, /etc/mysql/my.cnfe assim por diante. Se não houver um em um desses locais, você poderá criar um e saber que o MySQL o utilizará.

Erwin Mayer
fonte
3

Em um sistema Linux, 'localizar my.cnf "será a solução mais rápida.

Se houver vários arquivos my.cnf, todos à procura provável (por exemplo, /etc, /etc/mysql, /opt/mysql/etc, etc.), então você pode executar stracepara ver onde o MySQL tenta binários para encontrar seu arquivo de configuração, mas eu acho que isso é um exagero.

Paweł Brodacki
fonte
Eu entendo -bash: locate: command not found... eu tentei, find / my.cnfmas não encontra nada.
Webnet
Isso pressupõe que o seu localb foi atualizado desde que o arquivo my.cnf foi criado. Geralmente isso é feito diariamente via cron. Se você precisar atualizá-lo manualmente, execute "updatedb" como root
ckliborn
locate: command not foundnão é um problema atualizado, ele não possui o pacote.
Tim
instale o pacote "slocate".
TheCompWiz
2

OK, um tiro selvagem no escuro:

Se o banco de dados estiver instalado /usr/local/mysql, tente procurar /etc/localpormy.cnf

Aqui está como você pode saber se você tem um my.cnf

Execute esta consulta (<= 5.6.7)

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');

OU (>= 5.6.8)foi movido para o esquema de desempenho.

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

Se você deve obter:

Você está executando com padrões e existe a possibilidade de que não haja um my.cnfpresente.

NOTA:

No MySQL 5.7.6, as informações disponíveis nas tabelas descritas aqui também estão disponíveis no Esquema de Desempenho. As tabelas INFORMATION_SCHEMA são descontinuadas em preferência às tabelas do Esquema de desempenho e serão removidas em uma versão futura do MySQL. Para obter conselhos sobre como migrar das tabelas INFORMATION_SCHEMA para as tabelas do Esquema de Desempenho, consulte a Seção 25.20, “Migrando para o Sistema de Esquema de Desempenho e as Tabelas Variáveis ​​de Status”.

RolandoMySQLDBA
fonte
-bash: updatedb: command not found
Webnet
Atualizei minha resposta. Por favor, tente novamente !!!
RolandoMySQLDBA
/usr/bin/which: no updatedb in (/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/java/bin:/usr/local/apache2/bin:/usr/local/firefox:/usr/local/mysql/bin:/usr/games:/usr/local/fetter/bin)
Webnet
1

Como você instalou o MySQL e em qual plataforma?

Método de força bruta em um sistema operacional unixóide:

find / -name my.cnf -print
Sven
fonte
Não instalei, está em uma máquina com alguns anos de idade. Está ligadoLinux mars 2.6.5-7.147-bigsmp #1 SMP Thu Jan 27 09:19:29 UTC 2005 i686 i686 i386 GNU/Linux
Webnet
1

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf deve mostrar a chamada do sistema usada para abrir o arquivo.

Nils
fonte
1

Parece que o arquivo criado pelo seu cnf está sendo substituído por outro. Confira o pedido padrão abaixo.

De

mysqld --verbose --help

As opções padrão são lidas nos seguintes arquivos na ordem especificada: /etc/my.cnf ~ / .my.cnf /etc/my.cnf

ckliborn
fonte
1

Como você tem certeza de que seu arquivo cnf não está sendo lido?

Você reiniciou o mysqld desde a mudança?

Você tentou criar um novo banco de dados e olhou para seus valores?

ckliborn
fonte
0

Para instalar, localize e atualizeb para poder executá-lo.

Usando o fedora, o centos é executado como root:

yum install mlocate

Se você estiver executando o Ubuntu, execute:

sudo apt-get install mlocate

Após concluir a instalação, execute o updatedb Fedora (como root):

$updatedb 

Ubuntu:

sudo updatedb

então você pode executar o comando localizar conforme listado acima. Novamente, o my.cnf normalmente está localizado em / etc. Você tem certeza que o mysql está instalado? caso contrário, execute os comandos acima para instalá-lo e substitua o mlocate pelo mysqld; boa sorte!

J Baron
fonte