This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-03. For the latest, interactive version please visit https://mariadb.com/kb/.

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 do mysqld_safe, a tela não vai embora por padrão. Em vez disso, ele mostra um prompt para o usuário:
*<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.
  • --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.
  • --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.
  • --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 tags mysqld_safe e mysqld respectivamente. Para especificar um sufixo para o tag, use --syslog-tag=tag, o qual modifica os tags para serem mysqld_safe-tag e mysqld-tag. Esta opção foi adicionada no MySQL 5.1.21.
  • --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ê executar mysqld_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:

  1. Executa um numero de verificações de sistema e opções.
  2. Executa uma verificação nas tabelas MyISAM.
  3. Fornece uma presença de tela para o servidor MySQL.
  4. Inicia mysqld, monitora ele, e reinicia ele se este terminar em erro.
  5. Envia mensagens de erro desde mysqld até o arquivo host_name.err no diretório de dados.
  6. Envia uma saída em tela do mysqld_safe ao arquivo host_name.safe no diretório de dados.
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.