mysqld_safe
mysqld_safe
é a maneira recomendada de iniciar um servidor mysqld
no Unix e no NetWare. mysqld_safe
adiciona algumas caracteristicas de segurança como reiniciar o servidor quando ocorre um erro e registrar informação em tempo de execução em um log de erros. As descrições do registro de erros e comportamentos especificos do NetWare são tratados mais adiante nesta seção.
Nota: No MySQL 5.1.20 (só nele), o comportamento padrão de registro de erros com
mysqld_safe
é de escrever os erros no syslog em sistemas que suportam o programa logger. Isto difere do comportamento padrão de escrever um log de erros para outras versões.
No 5.1.20, escrever no syslog poderia falhar e não funcionar corretamente em algums casos; se assim for, use
--skip-syslog
para usar o log padrão ou
--log-error=//file_name//
para especificar um nome de arquivo explicitamente..
mysqld_safe
tenta iniciar um executável chamado mysqld. para substituir o comportamento padrão e especificar explicitamente o nome do servidor que você quiser executar, indique a opção --mysqld
ou --mysqld-version
para o
mysqld_safe
. Você também pode usar --ledir
para indicar o diretório onde mysqld_safe
deveria procurar pelo servidor.
Varias das opções para o mysqld_safe
são as mesmas do que as opções para o mysqld.
Opções desconhecidas pelo mysqld_safe
são passadas para o mysqld se elas forem especificadas na linha de comando, mas serão ignoradas se forem especificadas no grupo
[mysqld_safe
] de um arquivo de opções.
mysqld_safe
lê todas as opções das seções [mysqld], [server],
e [mysqld_safe
] nos arquivos de opções. Por exemplo, se você especificar
uma seção [mysqld] desta forma,mysqld_safe
irá achar e usar a opção --log-error
:
[mysqld] log-error=error.log
Para compatibilidade para trás, mysqld_safe
também lê seções [safe_mysqld], embora você deveria renomear essas seções para [mysqld_safe
] em instalações do MySQL 5.1.
Opções do mysqld_safe
mysqld_safe
suporta as seguintes opções:
--help
none Mostra uma mensagem de ajuda e termina.
--autoclose
- (Somente no NetWare) No NetWare,
mysqld_safe
fornece uma presença de tela. Quando você descarrega (desliga) o NLM domysqld_safe
, a tela não vai embora por padrão. Em vez disso, ele mostra um prompt para o usuário:
- (Somente no NetWare) No NetWare,
*<NLM foi finalizado; Presione qualquer tecla para fechar a tela>*
Se em vez disso você quer com que o NetWare feche a tela automaticamente use a opção --autoclose
em mysqld_safe
.
--basedir=path
none O caminho para o diretório de instalação do MySQL.
--core-file-size=size
none O tamanho do arquivo core que o mysqld deveria poder criar. O valor é passado para ulimit -c.
--datadir=path
- O caminho para o diretório de dados.
--defaults-extra-file=path
none O nome de um arquivo de opções para ser lido em adição aos arquivos habituais. Esta deve ser a primeira opção na linha de comandos se for ser usada. Se o arquivo não existir ou então for inacessível, o servidor termina com um erro.
--defaults-file=file_name
- O nome de um arquivo de opções para ser lido em adição aos arquivos habituais. Esta deve ser a primeira opção na linha de comandos se for ser usada.
--ledir=path
- Se o
mysqld_safe
não pode encontrar o servidor, use esta opção para indicar o nome do caminho até o diretório onde se encontra o servidor.
- Se o
--log-error=file_name
- Escreve o log de erro no arquivo dado
--mysqld=prog_name
- O nome do programa servidor (no diretório ledir) que você quiser iniciar. Esta opção é necessária se você usa a distribuição binária do MySQL mas tem o diretório de dados fora da distribuição binária. Se o
mysqld_safe
não pode encontrar o servidor, use a opção--ledir
para indicar o nome do caminho até o diretório onde se encontra o servidor.
- O nome do programa servidor (no diretório ledir) que você quiser iniciar. Esta opção é necessária se você usa a distribuição binária do MySQL mas tem o diretório de dados fora da distribuição binária. Se o
--mysqld-version=suffix
- Esta opção é similar a opção
--mysqld
, só que você especifica só o sufixo para o nome do programa servidor. Se assume que o nome nbase é mysqld. Por exemplo, se você usar:--mysqld-version=debug
,mysqld_safe
inicia o programa mysqld-debug no diretório ledir. Se o argumento para--mysqld-version
estiver vazio,mysqld_safe
usa o mysqld no diretório ledir.
- Esta opção é similar a opção
--nice=priority
- Usa o programa nice para definir a prioridade de planejamento do servidor para o valor dado.
--no-defaults
- Não lê nenhum arquivo de opções. Esta deve ser a primeira opção na linha de comandos se for ser usada.
--open-files-limit=count
none O número de arquivos que o mysqld deveria poder abrir. O valor é passado a ulimit -n. Lembre que você precisa iniciar mysqld_safe
como root para que isto funcione adequadamente!.
--pid-file=file_name
none O nome do caminho do arquivo do ID de processo.
--port=port_num
none O número de porta que o servidor deveria usar na escuta de conexões TCP/IP. O número de porta deve ser 1024 ou maior, a menos que o servidor seja iniciado pelo usuário administrador do sistema.
--skip-kill-mysqld
- Não tente terminar na inicialização processos mysqld perdidos. Esta opção apenas funciona no Linux.
--socket=path
none O socket Unix que o servidor deveria usar ao escutar conexões locais.
--syslog, --skip-syslog
none --syslog
faz com que sejam enviadas mensagens de erro ao syslog em sistemas que suportem o programa logger. --skip-syslog
suprime o uso do syslog; mensagens são gravadas em um arquivo de log de erros. Estas opções foram adicionadas no MySQL 5.1.20.
--syslog-tag=tag
- Para o registro no syslog, mensagens de
mysqld_safe
e mysqld são gravadas com tagsmysqld_safe
e mysqld respectivamente. Para especificar um sufixo para o tag, use--syslog-tag=tag
, o qual modifica os tags para seremmysqld_safe
-tag e mysqld-tag. Esta opção foi adicionada no MySQL 5.1.21.
- Para o registro no syslog, mensagens de
--timezone=timezone
- Define a variável de entorno TZ (time zone) para o valor dado.
Consulte a documentação do seu sistema operacional para formatos de especificação corretos do time zone.
--user={user_name|user_id}
- Executa o servidor mysqld como o usuário tendo o nome user_name ou a identidade numérica user_id. ("User" neste contexto se refere a uma conta do sistema, e não a um usuário do MySQL listado nas tabelas de permissões.)
Se você executar mysqld_safe
com a opção --defaults-file
ou a opção --defaults-extra-file
para designar um arquivo, a opção deve ser a primeira a ser passada na linha de comando, se não o arquivo não será usado. Por exemplo, este comando não usará o arquivo designado:
mysql> mysqld_safe --port=port_num --defaults-file=file_name
Em vez disso, use o seguinte comando:
mysql> mysqld_safe --defaults-file=file_name --port=port_num
O script mysqld_safe
, é escrito de tal forma que possa normalmente iniciar um servidor que foi instalado desde uma fonte ou uma distribuição binaria do MySQL, mesmo que esses tipos de distribuições instalam geralmente o servidor em locais levemente diferentes. (Veja a seção 2.1.5 "Esboços de Instalação".)
mysqld_safe
espera que uma das condições seguintes seja cumprida:
- O servidor e os bancos podem ser encontrados em relação ao diretório de trabalho (o diretório desde onde o
mysqld_safe
é invocado). Para distribuições binárias,mysqld_safe
procura sob seu diretório de trabalho pelos diretórios bin e data. Para distribuições fonte, ele procura por diretórios libexec e var. Esta condição deveria ser satisfeita se você executarmysqld_safe
desde seu diretório de instalação do MySQL (por exemplo, /usr/local/mysql para uma distribuição binária).
- Se o servidor e os bancos não podem ser encontrados em relação ao diretório de trabalho,
mysqld_safe
tenta localiçá-los por nomes de caminhos absolutos. Locais comuns são/usr/local/libexec
e/usr/local/var
. Os locais atuais são determinados pelos valores configurados na distribuição no momento que foi compilada.
Já que o mysqld_safe
tenta encontrar o servidor e os bancos relativos ao seu proprio diretório de trabalho, você pode instalar uma distribuição binária do MySQL em qualquer lugar, sempre que você execute mysqld_safe
desde o diretório de instalação do MySQL:
shell> cd mysql_installation_directory shell> bin/mysqld_safe &
Se o mysqld_safe
falhasse, mesmo sendo invocado desde o diretório de instalalação do MySQL, você pode especificar as opções --ledir
e
--datadir
para indicar os diretórios nos quais se encontram tanto o servidor como os bancos de dados no sistema.
Quando você usa mysqld_safe
para iniciar mysqld, mysqld_safe
obtem mensagens de erro de si mesmo e do mysqld para ir até o mesmo destino.
A partir do MySQL 5.1.20 existem varias opções do mysqld_safe
para controlar o destino dessas mensagens:
--syslog
: Grava mensagens de erro no syslog em sistemas que suportam o programa logger.
--skip-syslog
: Não grava mensagens de erro no syslog. As mensagens são gravadas no arquivo log de erros padrão (host_name.err no diretório de dados), ou em um arquivo designado se a opção--log-error
for passada.
--log-error=file_name
: Grava mensagens de erro no arquivo de erros designado.
Se nenhuma destas opções é dada, o padrão é --skip-syslog
.
Nota: Somente no MySQL 5.1.20, o padrão é --syslog
. Isto difere do comportamento no logging para outras versões do MySQL, nas quais o padrão é gravar as mensagens no arquivo log de erros padrão.
Se ambas as opções --syslog
e --log-error
forem dadas, um aviso é emitido e --log-error
tem precedência.
Quando mysqld_safe
escreve uma mensagem, os avisos vão ao destino de gravação (syslog ou o arquivo de registro de erros) e à saída padrão. Erros vão ao destino de gravação e à saída de erro.
Em versões anteriores ao MySQL 5.1.20, a gravação de erros é controlada somente com a opção --log-error
. Se esta for passada, as mensagens irão ao arquivo de erro designado. Caso contrário, as mensagens vão até o arquivo de erro padrão.
Normalmente, você não deveria editar o script mysqld_safe
. Em vez disso, configure mysqld_safe
usando as opções da linha de comando ou as opções na seção [mysqld_safe
] de um arquivo my.cnf. Em casos raros, poderia ser necessario editar mysqld_safe
para fazer com que inicie o servidor adequadamente. No entanto se você fizer isto, sua versão modificada do mysqld_safe
seria substituida se você atualizar o MySQL num futuro, então você deveria fazer uma copia da versão editada para poder reinstalar.
No NetWare, mysqld_safe
é um módulo carregável do NetWare (NetWare Loadable Module ou NLM) que é portado do shell script original do Unix. Este inicia o servidor da seguinte forma:
- Executa um numero de verificações de sistema e opções.
- Executa uma verificação nas tabelas MyISAM.
- Fornece uma presença de tela para o servidor MySQL.
- Inicia mysqld, monitora ele, e reinicia ele se este terminar em erro.
- Envia mensagens de erro desde mysqld até o arquivo host_name.err no diretório de dados.
- Envia uma saída em tela do
mysqld_safe
ao arquivo host_name.safe no diretório de dados.