Go to the first, previous, next, last section, table of contents.


2 Instalação do MySQL

Este capítulo descreve como obter e instalar o MySQL:

2.1 Instalação rápida padrão do MySQL

Este capítulo cobre a instalação do MySQL em plataformas onde oferecemos pacotes usando oformato de empacotamento nativo da respectiva plataforma. No entanto, as distribuições binárias do MySQL estão disponíveis para muitas outras plataformas, veja section 2.2.12 Instalando uma Distribuição Binária do MySQL para instruções gerais de instalação para estes pacotes que se aplicam a todas as plataformas.

Veja section 2.2 Detalhes Gerais de Instalação para mais informações sobre quais outras distribuições binárias estão disponíveis e como obtê-las.

2.1.1 Instalando o MySQL no Windows

O processo de instalação para o MySQL no Windows tem os seguintes passos:

  1. Instale a distribuição.
  2. Configure um arquivo de opção se necessário.
  3. Selcione o servidor que você quer usar.
  4. Inicie o servidor.

O MySQL para Windows está disponível em dois formatos de distribuição:

Geralmente, a melhor opção é a distribuição binária. É mais simples e você não precisa de nenhuma ferramenta adicional para ter o MySQL em execução.

2.1.1.1 Exigências do Sistema Windows

Para executar o MySQL no Windows, você precisará do seguinte:

2.1.1.2 Instalando uma Distribuição Binária do Windows

Para instalar o MySQL no Windows usando uma distribuição binária, siga este procedimento:

  1. Se você estiver trabalhando em uma máquina Windows NT, 2000, ou XP, esteja certo de que você está logado com um usuário com privileios de administrador.
  2. Se você estiver fazendo uma atualização de uma instalação MySQL mais nova, é necessário parar o servidor atual. Em máquinas com Windows NT, 200 ou XP, se você estiver executando o servidor como um serviço, pare-o com o comando:
    C:\> NET STOP MySQL
    
    Se você planeja usar um servidor diferente depois da atualização (por exemplo, se você quiser executar o mysqld-max em vez do mysqld), remova o serviço existente:
    C:\mysql\bin> mysqld --remove
    
  3. Você pode reinstalar o serviço com o servidor próprio depois de atualizar. Se você não estiver executando o servidor MySQL como um serviço, pare desta forma:
    C:\mysql\bin> mysqladmin -u root shutdown
    
  4. Finalize o programa WinMySQLAdmin se ele estiver em execução.
  5. Descompacte os arquivos de distribuição em um diretório temporário.
  6. Execute o programa `setup.exe' para iniciar o processo de instalação. Se você quiser instalar em um diretório diferente do padrão (`c:\mysql'), use o botão Browse para especificar seu diretório preferido. Se você não instalar o MySQL no local padrão, você precisará epecificar o local onde você inicia o servidor. O modo mais fácil de se fazer isto é usar um arquivo de opção, como descrito em section 2.1.1.3 Preparando o Ambiente MySQL do Windows.
  7. Finalize o processo de instalação.

2.1.1.3 Preparando o Ambiente MySQL do Windows

Se você precisar especificar opções de inicialização quando executar o servidor, você pode indentifica-los na linha de comando ou colocá-los em um arquivo de opção. Par opções que são usadas sempre que o servidor iniciar, você achará mais conveniente utilizar um arquivo de opcão para especificar a configuração do seu MySQL. Isto é particularmente verdade sob as seguintes circunstâncias:

No Windows, o instalador do MySQL coloca o diretório de dados diretamente sob o diretório onde você instalou o MySQL. Se você quisesse utilizar um diretório de dados em um local diferente, você deve copiar todo o conteúdo do diretórios data para a nova localização. Por exemplo, por padrão, o instalador coloca o MySQL em `C:\mysql' e o diretório de dados em `C:\mysql\data'. Se você quiser usar um diretório de dados de `E:\mydata', você deve fazer duas coisas:

Quando o servidor MySQL inicia no Windows, ele procura pelas opções em dois arquivos: O arquivo `my.ini' no diretório Windows e o arquivo chamado `C:\my.cnf'. O diretório do Windows é normalmente chamado `C:\WINDOWS' ou `C:\WinNT'. Você pode determinar a sua localização exata a partir do valor da variável de ambiente WINDIR usando o seguinte comando:

C:\> echo %WINDIR%

O MySQL procura pelas opções primeiro no arquivo `my.ini', e então pelo arquivo `my.cnf'. No entanto, para evitar confusão, é melhor se você usar apenas um destes arquivos. Se o seu PC usa um boot loader onde o drive C: não é o drive de boot, sua única opção é usar o arquivo `my.ini'. Independente de qual arquivo usar, ele deve ser no formato texto.

Um arquivo de opção pode ser criado e modificado com qualquer editor de texto como o programa Notepad. Por exemplo, se o MySQL está instalado em `D:\mysql' e o diretório de dados está localizado em `D:\mydata\data', você pode criar o arquivo de opção e definir uma seção [mysqld] para especificar valores para os parâmetros basedir e datadir:

[mysqld]
# defina basedir com o seu caminho de instalação
basedir=D:/mysql
# defina datadir com o local do diretório de dados,
datadir=D:/mydata/data

Note que os nome de caminho do Windows são específicados em arquivos de opção usando barras normais em ves de barra invertida. Se você usar barras invertidas, você deve usá-las em dobro.

Outro modo de se gerenciar um arquivo de opção é usar a ferramenta WinMySQLAdmin. Você pode encontrar o WinMySQLAdmin no diretório `bin' de sua instalação MySQL, assim como um arquivo de ajuda contendo instruções para usá-lo. O WinMySQLAdmin tem a capacidade de editar os seus arquivos de opção, mas note o seguinte:

Agora você está pronto para testar o servidor.

2.1.1.4 Selecionando um Servidor Windows

Iniciado com o MySQL 3.23.38, a distribuição Windows inclui ambos binários, normal e o MySQL-Max. Aqui está uma lista dos diferentes servidores MySQL dos quais você pode escolher:

Binario Descrição
mysqld Compilado com debugger integral e conferência automática de alocação de memória, links simbólicos, BDB e tabelas InnoDB.
mysqld-opt Binário otimizado. A partir da versão 4.0 o InnoDB está habilitado. Antes desta versão, este servidor não tem suporte a tabelas transacionais.
mysqld-nt Binário otimizado para NT/2000/XP com suporte para named pipes.
mysqld-max Binário otimizado com suporte para links simbólicos, tabelas BDB e InnoDB.
mysqld-max-nt Como o mysqld-max, porém compilado com suporte para named pipes.

Todos os binários acima são otimizados para processadores Intel modernos mas deve funcionar em qualquer processador Intel i386 ou melhor.

Os servidores mysqld-nt e mysqld-max-nt suportam conexões named pipe. Se você usar um destes servidores, o uso de named pipes está sujeito a estas condições:

2.1.1.5 Iniciando o Servidor pela Primeira Vez

No Windows 95, 98, ou Me, cliente MySQL sempre se conecta ao servidor usando TCP/IP. Nos sistemas baseados no NT, como o Windows NT, 2000, ou XP, os clientes possuem duas opções. Eles podem usar TCP/IP, ou eles podem usar um named pipe se o servidor suportar conexões named pipes.

Para informações sobre qual servidor binário executar, veja section 2.1.1.3 Preparando o Ambiente MySQL do Windows.

Esta seção lhe dá um visão geral da inicialização de um servidor MySQL. A seguinte seção fornce informação mais específica para versões particulares do Windows.

Os exemplos nesta seção assumem que o MySQL está instalado sob a localização padrão, `C:\mysql'. Ajuste o caminho mostrado nos exemplos se você tiver o MySQL instalado em um local diferente.

Fazer um teste a partir do prompt de comando do em uma janela de console (uma janela ``DOS'') é a melhor coisa a fazer porque o servidor mostra a mensagem de status que aparece na janela do DOS. Se alguma coisa estiver errado com sua configuração, estas mensagens tornarão mais fácil para você de identificar e corrigir qualquer problema.

Tenha certeza que você está no diretório onde o servidor é localizado e então entre este comando:

shell> mysqld --console

Para servidores que incluem suporte InnoDB, você deve ver as seguintes mensagens assim que o servidor iniciar:

InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be created
InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: creating foreign key constraint system tables
InnoDB: foreign key constraint system tables created
011024 10:58:25  InnoDB: Started

Quando o servidor finaliza sua sequência de inicialização, você deve ver algo como abaixo, que indica que o servidor está pronto para o conexão com o cliente:

mysqld: ready for connections
Version: '4.0.14-log'  socket: ''  port: 3306

O servidor continuará a gravar no console qualquer saída de diagnóstico adicional que ele produza. Você pode abrir uma nova janela de console na qual se executará os programas clientes.

Se você omitir a opção --console, o servidor grava a saída do diagnóstico no log de erro no diretório de dados. O log de erro é o arquivo com a extensão `.err'.

2.1.1.6 Iniciando o MySQL no Windows 95, 98, ou Me

No Windows 95, 98 ou Me, o MySQL usa TCP/IP para conectar um cliente a um servidor. (Isto permitirá que qualquer máquina na sua rede se conecte a seu servidor MySQL.) Por isto, você deve ter certeza de que o suporte TCP/IP está instalado na sua máquina antes de iniciar o MySQL. Você pode encontrar o TCP/IP no seu CD-ROM do Windows.

Note que se você estiver usando uma versão antiga do Win95 (por exemplo, OSR2). É preferível que você use um pacote antigo Winsock; para o MySQL é necessário o Winsock 2! Você pode obter o Winsock mais novo em http://www.microsoft.com. O Windows 98 tem a nova biblioteca Winsock 2, portanto não é necessário atualizar a biblioteca.

Para iniciar o servidor mysqld, você deve iniciar uma janela do Prompt (Janela ``MS-DOS'') e digitar:

shell> C:\mysql\bin\mysqld

Isto irá iniciar o mysqld em segundo plano. Isto é, depois do servidor iniciar, você deve ver outro prompt de comando. (Note que se você iniciar o servidor deste modo no Windows NT, 2000 ou XP, o servidor irá executar em segundo plano e nenhum prompt de comando aparecerá até que o servidor finalize. Por isto, você deve abrir outro prompt de comando para executar programas clientes enquanto o servidor estriver em execução.)

Você pode finalizar o servidor MySQL executando:

shell> C:\mysql\bin\mysqladmin -u root shutdown

Isto chama o utilitário administrativo do MySQL mysqladmin para conectar ao servidor e manda-lo finalizar. O comando conecta como root que é a conta administrativa padrão no sistema de permissões do MySQL. Por favor, note que o sistema de permissões do MySQL é totalmente independente de qualquer login de usuário sob o Windows.

Se o mysqld não iniciar, por favor, verifique o log de erro para ver se o servidor escreveu alguma mensagem que possa indicar a causa do problema. Você pode também tentar iniciar o servidor com mysqld --console; neste caso, você pode obter alguma informação útil na tela que pode ajudar a resolver o problema.

A última opção é iniciar o mysqld com --standalone --debug. Neste caso o mysqld irá escrever em um arquivo log `C:\mysqld.trace' que deve conter a razão pela qual o mysqld não inicia. See section E.1.2 Criando Arquivos Trace (Rastreamento).

Use mysqld --help para mostrar todas as opções que o mysqld entende!

2.1.1.7 Iniciando o MySQL no Windows NT, 2000, ou XP

Na família NT (Windows NT, 2000 ou XP) o modo recomendado de executar o MySQL é instalá-lo como um serviço do Windows. O Windows então inicia e para o servidor MySQL automaticamente quando o Windows inicia e para. Um servidor instalado como um serviço também pode ser controlado a partir da linha de comando usando os comandos NET, ou com o utilitário gráfico Serviços.

O utilitário Serviços (o Service Control Manager do Windows) pode ser encontrado no Painel de Controle do Windows (em Ferramentas Administrativas no Windows 2000). É recomendado que se feche o utilitário Serviços enquanto realiza a operações de instalação ou remoção do servidor a partir desta linha de comando. Isto evita alguns erros estranhos.

Para ter o MySQL funcionando com TCP/IP no Windows NT 4, você deve instalar o service pack 3 (ou mais novo)!

Antes de instalar o MySQL como um serviço, você deve primeiro parar o servidor atual em execução usando o seguinte commando:

shell> C:\mysql\bin\mysqladmin -u root shutdown

Isto chama o utilitário administrativo do MySQL mysqladmin para conectar ao servidor e mandá-lo parar. O comando conecta com root que é a conta administrativa padrão no sistema de permissões do MySQL. Por favor, note que o sistema de permissões do MySQL é totalmente independente de qualquer login de usuário sob o Windows.

Agora instale o servidor como um serviço:

shell> mysqld --install

Se você não definir um nome para o serviço, ele é instalado com o nome MySQL. Uma vez instalado, ele pode ser imediatamente iniciado a partir do utilitário Serviços, ou usando o comando NET START MySQL. (Este comando é caso insensitivo).

Uma vez em execução, o mysqld pode ser parado usando o utilitário de Serviços ou usando o comando NET STOP MySQL, ou o comando mysqladmin shutdown.

Se você tiver problemas instalando o mysqld como um servico usando apenas o nome do servidor, tente instalá-lo usando seu caminho compelto:

shell> C:\mysql\bin\mysqld --install

A partir do MySQL 4.0.2, você pode especificaro nome do serviço depois da opção --install. A partir do MySQL 4.0.3, você pode especificar uma opção --defaults-file depois do nome do serviço para indicar onde o servidor deve obter opções ao iniciar. A regras que determinam o nome do serviço e os arquivos de opção que o servidor usa são as seguintes:

Nota: Antes do MySQL 4.0.17, um servidor instalado como um serviço do Windows tinha problema na inicialização se o seu caminho ou nome do serviço possuisse espaços. Por esta razão, evite instalar o MySQL em um diretório como `C:\Program Files' ou usar um nome de serviço contendo espaço.

No caso normal que você instala o servidor com --install mas nenhum nome de serviço, o servidor é instalado com um nome de serviço de MySQL.

Como um exemplo mais complexo, considere o seguinte comando:

shell> C:\mysql\bin\mysqld --install mysql --defaults-file=C:\my-opts.cnf

Aqui, um nome de serviço é dado depois de opção --install. Se nenhuma opção --defaults-file for dada, este comando teria o efeito de fazer o servidor ler o grupo [mysql] a partir do arquivo de opções padrão. (Isto seria uma má idéia, porque aquele grupoo de opção é para ser usado pelo programa cliente mysql.) No entanto, como a opção --defaults-file está presente, o servidor lê as opções apenas a partir do arquivo indicado, e apenas do grupo de opção [mysqld].

Você também pode especificar as opções como ``Parâmetros de inicialização'' no utilitário de Serviços do Windows antes de você iniciar o serviço MySQL.

Uma vez que o servidor MySQL é instalado, o Windows irá iniciar o serviço automaticamente sempre que o Windows inicia. O serviço também pode ser iniciado imediatamente a partir do utilitário Serviços ou usando o comando NET START MYSQL. O comando NET não é caso sensitivo.

Note que quando executado como um serviço, o mysqld não têm acesso a um console e então nenhuma mensagem pode ser vista. Se o mysqld não iniciar, verifique o log de erros par ver se o servidor gravou alguma mensagem lá indicando a causa do problema. O log de erro está localizado no diretório `c:\mysql\data'. É o arquivo com um sufixo `.err'.

Quando o mysqld está executando como um serviço, ele pode ser parado usando o utilitários Serviços, o comando NET STOP MYSQL, ou o comando mysqladmin shutdown. Se o serviçp estiver em execução quando o Windows desliga, o Windows irá parar o servidor automaticamente.

A partir do MySQL versão 3.23.44, você pode escolher entre instalar o servidor como um serviço Manual se você não deseja que os serviços sejam executados automaticamente durante o processo de inicialização. Para fazer isto, use a opção --install-manual em vez da opção --install.

shell> C:\mysql\bin\mysqld --install-manual

Para remover um serviço que está instalado como um serviço, primeiro pare-o se ele estiver em execução. Então use a opção --remove para removê-lo:

shell> mysqld --remove

Um problema com a finalização automática do serviço MySQL é que, para versões do MySQL anteriores a 3.23.49, o Windows esparava apenas por alguns segundos para o desligamento completo, e matava os processos do servidor de banco de dados se o tempo limite fosse excedido. Isto potencialmente causava problemas. (Por exemplo, o mecanimo de armazenamento InnoDB deverá fazer uma recuperação de falhas na próxima inicialização). A partir do MySQL 3.23.49, o Windows irá esperar mais para que a finalização do MySQL Server esteja completa. Se você notar que ainda não é o suficiente para a sua instalação, não é seguro executar o MySQL Server como um serviço. Em vez disso, execute-o a partir do prompt de comando, e finalize-o com mysqladmin shutdown.

A alteração para avisar para o Windows para esperar mais quando parar o servidor MySQL funciona apenas com o Windows 2000 e XP, mas não para o Windows NT. No NT, o Windows espera apenas 20 segundos para que o serviço seja finalizado, e depois desso ele mata o processo do serviço. Você pode aumentar este padrão abrindo o Editor de Registro (`\winnt\system32\regedt32.exe') e editar o valor de WaitToKillServiceTimeout em `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control' na árvore do Registro. Especifique o novo valor mais largo em milisegundos (por exemplo 12000 para que o Windows NT espere até 120 segundos).

Se você não quiser iniciar o mysqld como um serviço, você pode iniciá-lo a partir da linha de comando do mesmo modo que em versões do Windows que não são baseados no NT. Para instruções use section 2.1.1.6 Iniciando o MySQL no Windows 95, 98, ou Me.

2.1.1.8 Executando o MySQL no Windows

O MySQL suporta TCP/IP em todas as plataformas Windows. Os servidores mysqld-nt e mysql-max-nt suportam named pipes no NT, 2000 e XP. No entanto, o padrão é usar TCP/IP, independente da plataforma:

A partir da versão 3.23.50, named pipes só está habilitado para o mysqld-nt e mysql-max-nt se eles forem iniciados com a opção --enable-named-pipe.

Você pode forçar que um cliente MySQL use named pipes especificando a opção --pipe ou especificando . como nome de máquina. Use a opção --socket para especificar o nome do pipe. No MySQL 4.1, você deve usar a opção --protocol=PIPE.

Você pode testar se o MySQL está funcionando executando qualquer dos seguintes comandos:

C:\> C:\mysql\bin\mysqlshow
C:\> C:\mysql\bin\mysqlshow -u root mysql
C:\> C:\mysql\bin\mysqladmin version status proc
C:\> C:\mysql\bin\mysql test

Se o mysqld está lento para responder a suas conexões no Win95/Win98, provavelmente existe um problema com seu DNS. Neste caso, inicie o mysqld com a opção --skip-name-resolve e use somente localhost e números IP na coluna Host das tabelas de permissões do MySQL.

Existem duas versões da ferramenta de linha de comando MySQL:
Binario Descrição
mysql Compilado em Windows nativo, oferecendo capacidades de edição de texto muito limitadas.
mysqlc Compilado com o compilador Cygnus GNU, que oferece edição readline.

Se você desejar usar o mysqlc, deve ter uma cópia da biblioteca `cygwinb19.dll' em algum lugar que o mysqlc possa encontrá-la. Se sua distribuição do MySQL não tiver esta biblioteca instalada no mesmo diretório que o mysqlc (o diretório bin sob o diretório base sa dua instalação do MySQL). Se sua distribuição não tem a biblioteca cygwinb19.dll no diretório `bin', olhe no diretório lib para encontrá-lo e copiá-lo para o seu diretório de sistema no Windows. (`\Windows\system' ou um lugar parecido).

Os privilégios padrões no Windows dão a todos usuários locais privilégios totais para todos os bancos de dados sem necessidade de especificar uma senha. Para deixar o MySQL mais seguro, você deve configurar uma senha para todos os usuário e remover a linha na tabela mysql.user que tem Host='localhost' e User=''.

Você também deve adicionar uma senha para o usuário root. O exemplo seguinte exemplo inicia removendo o usuário anônimo que tem todos os privilégios, e então configura uma senha para o usuário root:

C:\> C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;
mysql> QUIT
C:\> C:\mysql\bin\mysqladmin -u root password your_password

Depois de configurar a senha, se você desejar desligar o servidor mysqld, você pode usar o seguinte comando:

C:\> mysqladmin --user=root --password=sua_senha shutdown

Se você estiver usando o servidor de uma antiga versão shareware do MySQL versão 3.21m o comando mysqladmin para configurar uma senha irá falhar com um erro: parse error near 'SET password'. A correção para este problema é atualizar para uma versão mais nova do MySQL.

Com as versões atuais do MySQL você pode facilmente adicionar novos usuários e alterar privilégios com os comandos GRANT e REVOKE. See section 4.4.1 A Sintaxe de GRANT e REVOKE.

2.1.2 Instalando o MySQL no Linux

O modo recomendado para instalar o MySQL no Linux é usando um arquivo RPM. Os RPMs do MySQL atualmente são construídos na versão 7.3 do sistema Suse Linux mas deve funcionar em outras versões de Linux que suportam rpm e usam glibc.

Se você tiver problemas com um arquivo RPM (por exemplo, se você receber o erro ``Sorry, the host 'xxxx' could not be looked up''), veja section 2.6.2.1 Notas Linux para distribuições binárias.

Na maioria dos casos, você só precisa instalar os pacotes servidor MySQL e o cliente MySQL para ter uma instalação funcional do MySQL. Os outros pacotes não são exigidos para uma instalação padrão. Se você quiser executar um servidor MySQL Max que tenha capacidades adicionais, você deve instalar o RPM MySQL-Max depois de instalar o RPM MySQL-server. See section 4.8.5 mysqld-max, om servidor mysqld extendido.

Se você tiver um dependência de falha ao tentar instalar os pacotes do MySQL 4.0 (ex.: ``error: removing these packages would break dependencies: libmysqlclient.so.10 is needed by ...''), você também deve instalar o pacote MySQL-shared-compat, o qual inclui ambas as bibliotecas para compatibilidade com versões anteriores (libmysqlclient.so.12 para MySQL 4.0 e libmysqlclient.so.10 para MySQL 3.23).

Muitas distribuições Linux ainda vêm com o MySQL 3.23 a elas normalmente ligam as aplicações dinamicamente para economizar espaço em disco. Se estas bibliotecas compartilhadas estão em pacotes separados (ex.; MySQL-shared), é suficiente simplesmente deixar estes pacotes instalados e apenas atualizar os pacotes do servidor e cliente MySQL (que são estaticamente ligados e não dependem de bibliotecas compartilhadas). Para distribuições que incluem as bibliotecas compartilhadas no mesmo pacote que o servidor MySQL (ex.: Red Hat Linux), você também pode instalar nosso RPM MySQL-shares 3.23 ou usar o pacote compatível com MySQL-shared.

Os seguintes pacotes RPM estão disponíveis:

Para ver todos os arquivo em um pacote RPM, (por exemplo, um RPM MySQL-server), execute:

shell> rpm -qpl MySQL-server-VERSION.i386.rpm

Para realizar uma instalação mínima padrão, execute:

shell> rpm -i MySQL-server-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm

Para instalar somente o pacote cliente, execute:

shell> rpm -i MySQL-client-VERSION.i386.rpm

O RPM fornece um recurso para verificar a integridade e autenticidade dos pacotes antes de instalá-los. Se você quiser aprender mais sobre este recurso, veja section 2.2.2 Verificando a Integridade do Pacote Usando MD5 Checksums ou GnuPG.

O RPM coloca dados sob o `/var/lib/mysql'. O RPM também cria as entradas apropriadas em `/etc/rc.d/' para iniciar o servidor automaticamente na hora do boot. (Isto significa que se você realizou uma instalação anterior e fez alterações em seu script de inicialização, você pode desejar criar uma cópia do script para que você não perca ao instalar um RPM mais novo). Veja section 2.4.3 Inicializando e parando o MySQL automaticamente. para mais informações sobre como o MySQL pode ser iniciado automaticamente na inicialização do sistema.

Se você quiser instalar o RPM do MySQL em uma distribuição Linux mais antiga que não suporte scripts de inicialização no `/etc/init.d' (diretamente ou via link simbólico), você deve criar um link simbólico que aponte para a localização onde o seu script de instalação está atualmente instalado. Por exemplo, se esta localização for `/etc/rc.d/init.d', use estes comandos antes de intalar o RPM para criar `/etc/init.d' como um link simbólico que aponte lá:

shell> cd /etc; ln -s rc.d/init.d .

No entanto, todas as distribuições de Linux atuais já devem suportar este novo layout de diretório que usa `/etc/init.d' já que ele é exigido para compatibilidade LBS (Linux Standard Base).

Se o arquivo RPM que você instalar inclui o MySQL-server, o daemon mysqld deve estar pronto e em execução após a instalação. Agora você já deve poder iniciar o MySQL. See section 2.4 Configurações e Testes Pós-instalação.

Se alguma coisa der errado, você encontrar maiores informações no capítulo de instalação. See section 2.2.12 Instalando uma Distribuição Binária do MySQL.

2.1.3 Instalando o MySQL no Mac OS X

A partir do MySQL 4.0.11, você pode instalar o MySQL no Mac OS X 10.2 (``Jaguar'') usando um pacote do binário do Mac OS X PKG em vez da distribuição binário em tarball. Note que versões mais antigas do Mac OS X (ex.: 10.1.x) não são suportadas por este pacote.

Este pacote está localizado dentro de um arquivo de imagem de disco (.dmg). que você primeiro precisa montar com um duplo clique em sua ícone no Finder. Ele deve então montar a imagem e exibir o seu conteúdo.

NOTA: Antes de proceder com a instalação, tenha certeza que você finalizou todas as instâncias do MySQL em execução usando o MySQL Manager Aplication (no Mac OS X Server) ou via mysqladmin shutdown na linha de comando.

Para relamente instalar o MySQL PKG, de um duplo clique na ícone do pacote. Isto inicia o Mac OS Package Installer, que irá guia-lo pela instalação do MySQL.

O Mac OS X PKG do MySQL irá se instalar em `/usr/local/mysql-<version>' e também instalrá um link simbólico `/usr/local/mysql', apontando para a nova localização. Se um diretório chamado `/usr/local/mysql' já existe, ele será renomeado para `/usr/local/mysql.bak' em primeiro lugar. Adicionalmente, ele irá instalar a tabela de permissões do banco de dados MySQL executando mysql_install_db depois da instalação.

O layout de instalação é similar a aquele da distribuição binária, todos os binários do MySQL estão localizados no diretório `/usr/local/mysql/bin'. O socket MySQL será colocado em `/tmp/mysql.sock' por padrão. See section 2.2.8 Layouts de Instalação.

A instalação do MySQL exige uma conta de usuário do Mac OS X chamada mysql (uma conta de usuário com este nome existe por padrão no Mac OS X 10.2 e acima).

Se você estiver executando o MAC OS X Server, você já terá uma versão do MySQL instalado:

Esta seção do manual cobre a instalação apenas do MySQL Mac OS X PKG oficial. Leia o ajuda da Apple sobre a instalação do MySQL (Execute o aplicativo ``Help View'', selecione a ajuda do ``Mac OS X Server'' e faça uma busca por ``MySQL'' e leia o item entitulado ``Installing MySQL'').

Note especialmente, que a versão pré-instalada do MySQL no Mac OS X Server é iniciado com o comando safe_mysqld em vez de mysqld_safe.

Se anteriormente você usava pacotes do MySQL de Marc Liyanage para Mac OS X de http://www.entropy.ch, você pode simplesmente seguir as intruções de atualização para pacotes usando o layout de instalação dos binário como dados em suas páginas.

Se você está atualizado da versão 3.23.xx de Marc ou do versão Mac OS X Server do MySQL para o MySQL PKG oficial, você também deve converter a tabela de privilégios do MySQL existente para o formato atual, porque alguns novos privilégios de segurança foram adicionados. See section 2.5.6 Atualizando a Tabela de Permissões.

Se você preferisse iniciar automaticamente o MySQL durante o boot do sistema, você tambén precisa instalar o MySQL Startup Item. A partir do MySQL 4.0.15, ele é parte do disco de instalação do Mac OS X como um pacote de instalação separado. Simplesmente de um duplo clique no ícone MySQLStartupItem.pkg e siga as instruções para instalá-lo.

Note que isto só precisa ser feito uma vez! Não há necessidade de se instalar o Startup Item toda vez que se atualizar o pacote do MySQL.

Devido a um erro no instalador de pacotes do Mac OS X, algumas vezes você pode ver a mensagem de erro You cannot install this software on this disk. (null) no diálogo de seleção do disco de destino. Se este erro ocorrer, simplesmente clique no botão Go Back uma vez para retornar a tela anterior. Agora clique em Continue para avançar para a seleção do disco de destino novamente - agora você deve estar apto a escolher o disco destino corretamente. Nós informamos este erro a Apple e eles estão investigando este problema.

O Startup Item será instalado em `/Library/StartupItems/MySQL'. Ele adiciona uma variável MYSQLCOM=-YES- ao arquivo de configuração do sistema (`/etc/hostconfig'). Se você desejasse diasbilitar a inicialização automática do MySQL, simplesmente altere o valor desta variável para MYSQLCOM=-NO-.

No Mac OS X Server, o script de instalação do Startup Item disabilitará automaticamente a inicialização da instalação padrão do MySQL alterando a variável MYSQL em `/etc/hostconfig' para MYSQL=-NO-. Isto é para evitar conflitos na inicialização. No entanto, ele não desliga um servidor MySQL ajá em execução.

Depois da instalação, você pode iniciar o MySQL executando os seguintes comandos em um janela de terminal. Note qye você preceisa ter privilégios de administrador para realizar esta tarefa.

Se você tiver instalado o Startup Item:

shell> sudo /Library/StartupItems/MySQL/MySQL start
(Enter your password, if necessary)
(Press Control-D or enter "exit" to exit the shell)

Se você não tiver instalado o Startup Item, digite a seguinte sequência de comandos:

shell> cd /usr/local/mysql
shell> sudo ./bin/mysqld_safe
(Enter your password, if necessary)
(Press Control-Z)
shell> bg
(Press Control-D or enter "exit" to exit the shell)

Agora você deve conseguir se conectar ao servidor MySQL, ex.: executando `/usr/local/mysql/bin/mysql'

Se você instalar o MySQL pela primeira vez, lembre-se de consigurar uma senha para o usuário root do MySQL!

Isto é feito com os seguintes comandos:

/usr/local/mysql/bin/mysqladmin -u root password <password>
/usr/local/mysql/bin/mysqladmin -u root -h `hostname` password <password>

Por favor, tenha certeza que o comando hostname na segunda linha está entre crases (`), assim a shell pode substituí-la com a saída deste comando (o nome da máquina deste sistema)!

Você também pode querer adicionar aliases ao seu arquivo de resursos do sheel para acessar mysql e mysqladmin da linha de comando:

alias mysql '/usr/local/mysql/bin/mysql'
alias mysqladmin '/usr/local/mysql/bin/mysqladmin'

De forma alternativa, você pode simplesmente adicionar /usr/local/mysql/bin a sua variável de ambiente PATH, ex.: adicionando o seguinte ao arquivo `$HOME/.tcshrc':

setenv PATH ${PATH}:/usr/local/mysql/bin

Note que instalar um novo MySQL PKG não remove o diretório de uma instalação mais antiga. Infelizmente o Mac OS X Installer ainda não oferece a funcionalidade exigida para atualizar apropriadamente pacotes instalados anteriormente.

Depois de copiar os arquivos de banco de dados do MySQL sobre os da versão anterior e inicializar o nova versão com sucesso, você deve remover os arquivos da instalação antiga para economizar espaço em disco. Adicionalmente você também deve remover versões mais antigas do diretório do Package Receipt localizados em `/Library/Receipts/mysql-<version>.pkg'.

2.1.4 Instalando o MySQL no NetWare

A partir da versão 4.0.11, o MySQL está disponível para a Novell NetWare na forma de pacote do binário. Para servir o MySQL, o servidor NetWare deve suprir estas exigências:

O pacote binário para o NetWare pode ser obtido em http://www.mysql.com/downloads/.

Se você estiver executando o MySL no NetWare 6.0, sugerimos que você utilize a opção --skip-external-locking na linha de comando. Também será necessário utilizar CHECK TABLE e REPAIR TABLE em vez de myisamchk, porque myisamchk faz uso de lock externo. Lock externo possui problemas com NetWare 6.0; o problema foi eliminado no NetWare 6.5.

2.1.4.1 Instalando o MySQL para Binários do NetWare

  1. Se você estiver atualizando de um instaação anterior, para o servidor MySQL. Isto é feito a partir do console do servidor, usando:
    SERVER:  mysqladmin -u root shutdown
    
  2. Conecte-se no servidor alvo a partir de uma máquina cliente com acesso ao local onde você instalará o MySQL.
  3. Extraia o pacote zip binário em seu servidor. Tenha certeza de permitir que os caminhos no arquivo zip sejam usados. É seguro simplesmente extrair os arquivos para `SYS:\'. Se você estiver atualizando de uma instalando anterior, você pode precisar copiar os diretórios de dados (ex.: `SYS:MYSQL\DATA') agora, assim como `my.cnf' se você o tiver costumizado. Você pode então deletar a cópia antiga do MySQL.
  4. Você pode desejar renomear o diretório para algo mais consistente e fácil de usar. Recomendamos usar o `SYS:MYSQL'; exemplos no manual o usarão para se referir ao diretório de instalação em geral.
  5. No console do servidor, adicione um caminho de busca no diretório contendo os NLMs do MySQL. Por exemplo:
    SERVER:  SEARCH ADD SYS:MYSQL\BIN
    
  6. Instale o banco de dados inicial, se necessário, digitando mysql_install_db no console do servidor.
  7. Inicie o servidor MySQL usando mysqld_safe no console do servidor.
  8. Para finalizar a instalação, você também deve adicionar os seguintes comandos ao autoexec.ncf. Por exemplo, se sua instalação do MySQL está em `SYS:MYSQL' e você quiser que o MySQL inicie automaticamente, você pode adicionar estas linhas:
    #Starts the MySQL 4.0.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE
    
    Se você estiver usando NetWare 6.0, você deve adicionar o parâmetro --skip-external-locking:
    #Starts the MySQL 4.0.x database server
    SEARCH ADD SYS:MYSQL\BIN
    MYSQLD_SAFE --skip-external-locking
    

Se houver uma instalação existente do MySQL no servidor, verifique a existencia de comandos de inicialização do MySQL em autoexec.ncf, e edite ou delete-os se necessário.

2.2 Detalhes Gerais de Instalação

2.2.1 Como obter o MySQL

Confira a homepage da MySQL homepage (http://www.mysql.com/) para informações sobre a versão atual e para instruções de download.

Nosso principal espelho de download está localizado em: http://mirrors.sunsite.dk/mysql/.

Para uma lista atualizada completa dos mirrors de download da MySQL, veja http://www.mysql.com/downloads/mirrors.html. Você também encontrará informação sobre como se tornar um mirror do MySQL e como relatar um mirror ruim ou desatualizado.

2.2.2 Verificando a Integridade do Pacote Usando MD5 Checksums ou GnuPG

Depois de fazer o download do pacote MySQL que serve às suas necessidades e antes de tentar instalá-lo, você deve ter certeza de que ele esta intacto e não foi manipulado.

A MySQL AB oferece dois tipos de verificação de integridade: MD5 checksums e assinaturas criptografadas usando GnuPG, o GNU Privacy Guard.

2.2.3 Verificando o MD5 Checksum

Depois de fazer o download do pacote, você deve verificar se o MD5 checksum corresponde a aquele fornecido na página de download do MySQL. Cada pacote tem um checksum individual, que você pode verificar com o seguinte comando:

shell> md5sum <pacote>

Note que nem todos os sistemas operacionais suportam o comando md5sum - em alguns ele é simplesmente chamado md5, outros não o possuem. No Linux, ele é parte do pacote GNU Text Utilities, que está disponível para uma grande faixa de plataformas. Você pode fazer o download do código fonte em http://www.gnu.org/software/textutils/. Se você tiver o OpenSSL instalado, você também pode usar o comando openssl md5 <pacote>. Uma implementação do comando md5 para DOS/Windows está disponível em http://www.fourmilab.ch/md5/.

Exemplo:

shell> md5sum mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz
155836a7ed8c93aee6728a827a6aa153
                mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz

Você deve verificar se o resultado do checksum corresponde a aquele impresso no página de download logo abaixo do respectivo pacote.

A maioria do sites mirrors também oferecem um arquivo chamado `MD5SUMS', que também inclui o MD5 checksums para todos os arquivos incluídos no diretório `Downloads'. Note no entanto que é muito fácil de modificar este arquivo e ele não é um método muito confiável. Caso esteja em dúvida, você deve consultar diferentes sites mirroers e comparar os resultados.

2.2.4 Verificação de Assinatura Usando GnuPG

Um método de verificação de integridade de um pacote mais confiável é o uso de assinaturas criptografadas. A MySQL AB usa o GNU Privacy Guard (GnuPG), uma alternativa Open Source para o bem conhecido Pretty Good Privacy (PGP) de Phil Zimmermann. Veja http://www.gnupg.org/ and http://www.openpgp.org/ para mais informações sobre OpenPGP/GnuPG e como obter e instalar o GnuPG em seus sistema. A maioria das distribuições de Linux já vêm com o GnuPG instalado por padrão.

A partir do MySQL 4.0.10 (Fevereiro de 2003), a MySQL AB começou a assinar o seus pacotes de download com GnuPG. Assinaturas criptografadas são um método bem mais confiável de verificação da integridade e autenticidade de um arquivo.

Para verificar a assinatura de um pacote específico, você primeiro precisa obtter uma cópia da chave pública GPG da MySQL AB (build@mysql.com). Você também pode cortá-la e colá-la diretamente daqui ou obtê-la em http://www.keyserver.net/.

Key ID:
pub  1024D/5072E1F5 2003-02-03
     MySQL Package signing key (www.mysql.com) <build@mysql.com>
Fingerprint: A4A9 4068 76FC BD3C 4567  70C8 8C71 8D3B 5072 E1F5

Public Key (ASCII-armored):

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
bT6IXQQTEQIAHQUCPj6jDAUJCWYBgAULBwoDBAMVAwIDFgIBAheAAAoJEIxxjTtQ
cuH1cY4AnilUwTXn8MatQOiG0a/bPxrvK/gCAJ4oinSNZRYTnblChwFaazt7PF3q
zIhMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
=YJkx
-----END PGP PUBLIC KEY BLOCK-----

Você pode importar esta chave em seu pasta de chaves publicas GPG usando gpg --import. Veja a documentação de GPG para mais informações de como trabalhar com chaves públicas.

Depois de fazer o download e importar a chave publica criada, faça o download do pacote MySQL desejado e da assinatura correspondente, que também está disponível na página de download. A assinatura tem a extensão `.asc'. Por exemplo, a assinatura de `mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz' seria `mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc'. Tenha certeza que ambos os arquivos estão armazenados no mesmo diretório e então execute o seguinte comando para verificar a assinatura para este arquivo:

shell> gpg --verify <package>.asc

Exemplo:

shell> gpg --verify mysql-standard-4.0.10-gamma-pc-linux-i686.tar.gz.asc
gpg: Warning: using insecure memory!
gpg: Signature made Mon 03 Feb 2003 08:50:39 PM MET using DSA key ID 5072E1F5
gpg: Good signature from
     "MySQL Package signing key (www.mysql.com) <build@mysql.com>"

A mensagem "Good signature" indica que está tudo certo.

2.2.5 Verificando Assinatura Usando RPM

Para pacotes RPM, não há assinaturas separadas - pacotes RPM atualmente têm uma assinatura GPG incluída e MD5 checksum. Você pode verificá-los executando o seguinte comando:

shell> rpm --checksig <package>.rpm

Exemplo:

shell> rpm --checksig MySQL-server-4.0.10-0.i386.rpm
MySQL-server-4.0.10-0.i386.rpm: md5 gpg OK

Nota: Se você estiver usando RPM 4.1 e ele reclamar sobre (GPG) NOT OK (MISSING KEYS: GPG#5072e1f5) (mesmo se você a importou para detro de sua pasta de chaves publicas GPG), você precisa importá-las para dentro de sua pasta de chaves RPM primeiro. RPM 4.1 não utiliza mais ias suas pastas de chaves GPG (e o próprio GPG), mas mantém sua própria pasta de chaves (porque ele é um aplicativo do sistema e a pasta de chaves públicas do GPG é um arquivo específico do usuário). Para importar a chave pública do MySQL em uma pasta de chaves RPM, use os seguintes comandos:

shell> rpm --import <pubkey>

Exemplo:

shell> rpm --import mysql_pubkey.asc

Caso você note que as assinaturas MD5 checksum ou GPG não coincidem, tente primeiro fazer o download do pacote respectivo mais uma vez, talvez de outro site mirror. Se você não obter sucesso na verificação da integridade do pacote repetidas vezes, notifique-nos sobre tais incidentes incluindo o nome completo do pacote e o site que você tem utilizado para fazer o download pelos emails webmaster@mysql.com ou build@mysql.com.

2.2.6 Sistemas Operacionais suportados pelo MySQL

Nós ulitizamos o GNU Autoconf, para que seja possível portar o MySQL para todos sistemas operacionais modernos com threads Posix funcionando e um compilador C++. (Para compilar somente o código cliente, um compilador C++ é necessário mas threads não.) Nós mesmos usamos e desenvolvemos o software primeiramente no Linux (SuSE e red Hat), FreeBSD e Sun Solaris (Versões 8 e 9).

Perceba que para alguns sistemas operacionais, o suporte nativo a thread funciona somente nas últimas versões. O MySQL compila com sucesso nas seguintes combinações de sistema operacional/pacote de thread:

Perceba que nem todas as plataformas são apropriadas para executar o MySQL. Os seguintes fatores determinam se uma certa plataforma é apropriada para uma missão crítica pesada:

Baseado nos critérios acima, as melhores plataformas para a execução do MySQL até este ponto são o x86 com SuSe Linux 8.2, kernel 2.4 e ReiserFS (ou qualquer distribuição Linux similar) e Sparc com Solaris (2.7-9). FreeBSD vem em terceiro, mas realmente temos esperanças que ele irá se unir ao clube dos tops uma vez que a biblioteca thread está melhorando. Nós também acreditamos que em certo ponto iremos estar aptos para incluir todas as outras plataformas em que o MySQL compila e executa, mas não tão bem e com o mesmo nível de estabilidade e performance, na categoria superior. Isto necessitará de algum esforço da nossa parte em cooperação com os desenvolvedores dos componentes do Sistema Operacional/Biblioteca que o MySQL depende. Se você tiver interesse em melhorar algum de nossos componentes, está em uma posição para influenciar seu desenvolvimento, e precisa de instruções mais detalhadas sobre o que o MySQL necessita para uma melhor execução, envie um e-mail para lista de email ``insternals'' do MySQL. See section 1.7.1.1 As Listas de Discussão do MySQL.

Por favor, perceba que a comparação acima não é para dizer que um SO é melhor ou pior que o outro em geral. Nós estamos falando sobre a escolha de um SO para um propósito dedicado: executar o MySQL, e comparamos as plataformas levando isto em consideração. Desta forma, o resultado desta comparação seria diferente se nós incluíssemos mais detalhes. E em alguns casos, a razão de um SO ser melhor que o outro pode ser simplesmente porque colocamos mais esforço nos testes e otimização para aquela plataforma em particular. Estamos apenas colocando nossas observações para ajudá-lo na decisão de qual plataforma usar o MySQL na sua configuração.

2.2.7 Qual versão do MySQL deve ser usada

A primeira decisão a ser feita é se você deve usar a última versão de desenvolvimento ou a última versão estável:

A segunda decisão a ser feita é se você deseja usar uma distribuição fonte ou binária. Na maioria dos casos provavelmente você deverá usar a distribuição binária, se alguma existir para sua plataforma, será normalmente muito mais fácil para instalar do que a distribuição em código fonte.

Nos seguites casos você provavelmente será mais bem servido com uma instalação baseada em código fonte:

O esquema de nomes do MySQL usa números de versões que consistem de tres números e um sufixo. Por exemplo, um nome de lançamento como mysql-4.1.0-alpha é interpretado da seguinte maneira:

No processo de desenvolvimento do MySQL, várias versões coexistem e estão em um estágio diferente. Naturalmente, correções de erros relevantes de uma série anterior são propagados.

Todas as versões do MySQL funcionam sobre nossos testes padrões e comparativos para garantir que eles são relativamente seguros para o uso. Como os testes padrões são extendidos ao longo do tempo para conferir por todos os bugs antigos encontrados, o pacote de testes continua melhorando.

Perceba que todas publicações de versões foram testadas pelo menos com:

Um pacote de testes interna
Faz parte de um sistema de produção para um cliente. Ela tem diversas tabelas com centenas de megabytes de dados. O diretório `mysql-test' contém um conjunto extensivo de casos de teste. Nós executamos estes testes para cada servidor binário.
O pacote de comparativos da MySQL
Este executa uma série de consultas comuns. É também um teste para ver se o último conjunto de otimizações fez o código mais rápido. See section 5.1.4 O Pacote de Benchmark do MySQL.
O teste crash-me
Este tenta determinar quais recursos o banco de dados suporta e quais são suas capacidades e limitações. See section 5.1.4 O Pacote de Benchmark do MySQL.

Outro teste é que nós usamos a versão do MySQL mais nova em nosso ambiente de produção interna, em pelo menos uma máquina. Nós temos mais de 100 gigabytes de dados com que trabalhar.

2.2.8 Layouts de Instalação

Esta seção descreve o layout padrão dos diretórios criados pela instalção das distribuições binária e fonte.

Uma distribuição binária é instalada descompactando-a no local de instalação de sua escolha (tipicamente `/usr/local/mysql') e cria os seguintes diretórios nesses locais:

Diretório Conteúdo do diretório
`bin' Programas clientes e o servidor mysqld
`data' Arquivos Log, bancos de dados
`docs' Documentação, Log de alterações
`include' Arquivos de cabeçalho (headers)
`lib' Bibliotecas
`scripts' mysql_install_db
`share/mysql' Arquivos de mensagem de erro
`sql-bench' Benchmarks - testes comparativos

Uma distribuição baseada em código fonte é instalada depois de você configurá-la e compilá-la. Por padrão, a instalação copia os arquivos em `/usr/local', nos seguintes subdiretórios:

Diretório Conteúdo do diretório
`bin' Programas clientes e scripts
`include/mysql' Arquivos de cabeçalho (headers)
`info' Documentação no formato Info
`lib/mysql' Bibliotecas
`libexec' O servidor mysqld
`share/mysql' Arquivos com mensagens de erros
`sql-bench' Benchmarks e o teste crash-me
`var' Bancos de dados e arquivos log

Dentro de um diretório de instalação, o layout de uma instalação baseada em fontes diferencia de uma instalação binária nas seguintes formas:

You can create your own binary installation from a compiled source distribution by executing the script `scripts/make_binary_distribution'.

2.2.9 Como e quando as atualizações são lançadas?

O MySQL está evoluindo muito rapidamente na MySQL AB e nós queremos compartilhar isto com outros usuários MySQL. Sempre que temos alguns recursos úteis que outros acham necessáio, tentamos fazer um release.

Também tentamos ajudar usuários que solicitam recursos que são de fácil implementação. Tomamos notas do que nossos usuários licenciados gostariam de ter,especialmente do que nossos clientes com suporte extendido desejam e tentamos ajudá-los.

Não existe uma real necessidade para baixar uma nova release. A seção News irá dizer se a nova versão tem alguma coisa que você precisa. See section D Histórico de Alterações do MySQL.

Usamos a seguinte política quando estamos atualizando o MySQL:

A versão estável atual é a 3.23; nós já mudamos o desenvolvimento em atividade para a versão 4.0. Bugs contiuarão a ser corrigidos na versão estável. Não acreditamos em um congelamento completo, pois isto abandona a correções de bugs e coisas que ``devem ser feitas.'' ``Alguma coisa congelada'' significa que talvez possamos adicionar pequenas coisas que ``com certeza não afetará nada que já esteja funcionando.''

O MySQL usa um esquema de nomes um pouco diferente da maioria dos outros produtos. Em geral é relativamente seguro utilizar qualquer versão que tenha sido lançado a algumas semanas e que não tenham sido sustituída por uma nova versão. See section 2.2.7 Qual versão do MySQL deve ser usada.

2.2.10 Filosofia das Distribuições - Nenhum Bug Conhecidos nas Distribuições

Colocamos muito tempo e esforço em tornar nossas distribuições livres de erros. Pelo nosso conhecimento, não liberamos uma única versão do MySSQL com qualquer erro conhecido 'fatal'.

Um erro fatal é algo que faz o MySQL falhar com o uso normal, traz respostas erradas para consultas normais ou tem um problema de segurança.

Nós temos documentados todos os problemas conhecidos, bugs e assuntos que são dependentes das decisões de projeto. See section 1.8.6 Erros Conhecidos e Deficiências de Projetos no MySQL.

Nosso objeto é corrigir tudo que é possível, mas sem correr o risco de tornarmos uma versão menos estável. Em certos casos, isto significa que podemos corrigir um problema na(s) versão(ões) de desenvolvimento, mas não o corrigirmos na versão estável (produção). Naturalmente, documentamos tais problemas para que o usuários esteja ciente.

Aqui está um descrição de como nosso processo de contrução funciona:

2.2.11 Binários MySQL compilados pela MySQL AB

Como um serviço, nós na MySQL AB fornecemos um conjunto de distribuições binárias do MySQL que são compiladas no nosso site ou em sites onde os clientes cordialmente nos dão acesso as suas máquinas.

Em adição aos binários forncedios em formatos de pacotes específicos da plataforma (veja section 2.1 Instalação rápida padrão do MySQL), oferecemos distribuições binários para outras plataformas através de arquivos tar compactados (.tar.gz).

Estas distribuições são geradas usando o script Build-tools/Do-compile que compila o código fonte e cria o arquivo binário em tar.gz usando scripts/make_binary_distribution. Estes binários são configurados e construídos com os seguintes compiladores e opções.

Binários construídos no sistema de desenvolvimento da MySQL AB:

Linux 2.4.xx x86 com gcc 2.95.3
CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
Linux 2.4.xx Intel Itanium 2 com ecc (Intel C++ Itanium Compiler 7.0)
CC=ecc CFLAGS="-O2 -tpp2 -ip -nolib_inline" CXX=ecc CXXFLAGS="-O2 -tpp2 -ip -nolib_inline" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile
Linux 2.4.xx Intel Itanium com ecc (Intel C++ Itanium Compiler 7.0)
CC=ecc CFLAGS=-tpp1 CXX=ecc CXXFLAGS=-tpp1 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile
Linux 2.4.xx alpha com ccc (Compaq C V6.2-505 / Compaq C++ V6.3-006)
CC=ccc CFLAGS="-fast -arch generic" CXX=cxx CXXFLAGS="-fast -arch generic -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared --disable-shared
Linux 2.4.xx s390 com gcc 2.95.3
CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static
Linux 2.4.xx x86_64 (AMD64) com gcc 3.2.1
CXX=gcc ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
Sun Solaris 8 x86 com gcc 3.2.3
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb
Sun Solaris 8 sparc com gcc 3.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 8 sparc 64bit com gcc 3.2
CC=gcc CFLAGS="-O3 -m64 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -m64 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 9 sparc com gcc 2.95.3
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-curses-libs=-lcurses --disable-shared
Sun Solaris 9 sparc com cc-5.0 (Sun Forte 5.0)
CC=cc-5.0 CXX=CC ASFLAGS="-xarch=v9" CFLAGS="-Xa -xstrconst -mt -D_FORTEC_ -xarch=v9" CXXFLAGS="-noex -mt -D_FORTEC_ -xarch=v9" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=no --enable-thread-safe-client --disable-shared
IBM AIX 4.3.2 ppc com gcc 3.2.3
CFLAGS="-O2 -mcpu=powerpc -Wa,-many " CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared
IBM AIX 4.3.3 ppc com xlC_r (IBM Visual Age C/C++ 6.0)
CC=xlc_r CFLAGS="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" CXX=xlC_r CXXFLAGS ="-ma -O2 -qstrict -qoptimize=2 -qmaxmem=8192" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared --with-innodb
IBM AIX 5.1.0 ppc com gcc 3.3
CFLAGS="-O2 -mcpu=powerpc -Wa,-many" CXX=gcc CXXFLAGS="-O2 -mcpu=powerpc -Wa,-many -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --with-server-suffix="-pro" --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --disable-shared
HP-UX 10.20 pa-risc1.1 com gcc 3.1
CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc CXXFLAGS="-DHPUX -I/opt/dce /include -felide-constructors -fno-exceptions -fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-pthread --with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC --disable-shared
HP-UX 11.11 pa-risc2.0 64 bit com aCC (HP ANSI C++ B3910B A.03.33)
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
HP-UX 11.11 pa-risc2.0 32bit com aCC (HP ANSI C++ B3910B A.03.33)
CC=cc CXX=aCC CFLAGS="+DAportable" CXXFLAGS="+DAportable" ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb
Apple Mac OS X 10.2 powerpc com gcc 3.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
FreeBSD 4.7 i386 com gcc 2.95.4
CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --with-named-z-libs=not-used --disable-shared
QNX Neutrino 6.2.1 i386 with gcc 2.95.3qnx-nto 20010315
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared

Os seguintes binários são contruídos em sistemas de terceiros gentilmente cedidos para a MySQL AB pou outros usuários. Pou favor, note que eles só são fornecidos como cortesia. Uma vez que a MySQL AB não tem total controle sobre estes sistemas, nós podemos fornecer apenas suporte limitado para os binários construídos nestes sistemas.

SCO Unix 3.2v5.0.6 i386 com gcc 2.95.3
CFLAGS="-O3 -mpentium" LDFLAGS=-static CXX=gcc CXXFLAGS="-O3 -mpentium -felide-constructors" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared
SCO OpenUnix 8.0.0 i386 com CC 3.2
CC=cc CFLAGS="-O" CXX=CC ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-named-z-libs=no --enable-thread-safe-client --disable-shared
Compaq Tru64 OSF/1 V5.1 732 alpha com cc/cxx (Compaq C V6.3-029i / DIGITAL C++ V6.1-027)
CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -fast -inline speed -speculate all -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --with-prefix=/usr/local/mysql --with-named-thread-libs="-lpthread -lmach -lexc -lc" --disable-shared --with-mysqld-ldflags=-all-static
SGI Irix 6.5 IP32 com gcc 3.0.1
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared
FreeBSD 5.0 sparc64 com gcc 3.2.1
CFLAGS=-DHAVE_BROKEN_REALPATH ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --libexecdir=/usr/local/mysql/bin --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --disable-shared --with-innodb

As seguintes opções de compilação foram usadas nos pacotes binários que a MySQL AB costumava fornecer no passado. Estes binários não são mais atualizados, mas as opções de compilação são mantidas aqui com o propósito de referência.

Linux 2.2.xx sparc com egcs 1.1.2
CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex --enable-thread-safe-client --enable-local-infile --enable-assembler --disable-shared
Linux 2.2.x com x686 com gcc 2.95.2
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex
SunOS 4.1.4 2 sun4c com gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler
SunOS 5.5.1 (e acima) sun4u com egcs 1.0.3a ou 2.90.27 ou gcc 2.95.2 e mais novo
CC=gcc CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex --enable-assembler
SunOS 5.6 i86pc com gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex
BSDI BSD/OS 3.1 i386 com gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
BSDI BSD/OS 2.1 i386 com gcc 2.7.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex
AIX 2 4 com gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex

Qualquer que tenha mais opções otimizadas para qualquer das configurações listadas acima pode sempre enviá-los para a lista de email ``internals'' do MySQL. See section 1.7.1.1 As Listas de Discussão do MySQL.

Distribuições RPM que anteceda o MySQL versão 3.22 são contribuições dos usuários. Os RPMs gerados por nós da MySQL AB só começaram a ser fornecidos a partir da versão 3.22 do MySQL.

Se você deseja compilar uma versão para depuração do MySQL, você deve adicionar --with-debug ou --with-debug=full para as linhas de configuração acima e remover qualquer opção -fomit-frame-pointer.

Para distribuições do Windows, por favor, veja section 2.1.1 Instalando o MySQL no Windows.

2.2.12 Instalando uma Distribuição Binária do MySQL

Este capítulo cobre a instalação da distribuição binária do MySQL (.tar.gz Archives) para várias plataformas (veja MySQL binaries para uma lista detalhada).

Em adição a estes pacotes genéricos, também oferecemos binários em formatos de pacote específicos da plataforma para plataformas selecionadas. Veja section 2.1 Instalação rápida padrão do MySQL para mais informações sobre como\ intalá-los.

As distribuições genéricas do MySQL estão empacotados com arquivos GNU tar com compactação gzip (.tar.gz). Você precisa das seguintes ferramentas para instalar um distribuição binária do MySQL:

Se você tiver problemas, sempre use mysqlbug ao enviar dúvidas para a lista de email do MySQL. Mesmo se o problema não for um bug, mysqlbug colhe informações do sistema que ajudarão os outros a solucionar o seu problema. Se não usar mysqlbug, você terá diminuída a probabilidade de conseguir a solução do seu problema. Você encontrará o mysqlbug no diretório `bin' depois de descompactar a distribuição. See section 1.7.1.3 Como relatar erros ou problemas.

Os comando básicos que você deve executar para instalar e usar uma distribuição binária do MySQL são:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db
shell> chown -R root  .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &

Se a sua versão do MySQL é mais antiga que a 4.0, substitua bin/safe_mysqld por bin/mysqld_safe no comando final.

Você pode adicionar novos usuários usando o script bin/mysql_setpermission se você instalar os módulos Perl DBI e DBD-mysql.

Uma descrição mais detalhada é apresentada a seguir.

Para instalar uma distribuição binária, siga estes passos, então proceda com a section 2.4 Configurações e Testes Pós-instalação, para a configuração da pós istalação e testes:

  1. Escolha o diretório sob o qual você deseja descompactar a distribuição e a mova para dentro dele. No exemplo a seguir, descompactamos a distribuição sob `/usr/local' e criamos um diretório `/usr/local/mysql' dentro do qual o MySQL é instalado. (As seguintes instruções, consequentemente, assumem que você tem permissão para criar arquivos em `/usr/local'. Se este diretório é protegido, você precisará realizar a instalação como root.)
  2. Obtenha um arquivo de distribuição de um dos sites listados em section 2.2.1 Como obter o MySQL. As distribuições binárias do MySQL são fornecidas como arquivos tar compactados e tem nomes como `mysql-VERSÃO-SO.tar.gz', onde VERSÃO é um número (por exemplo, 3.21.15) e SO indica o tipo de sistema operacional para o qual a distribuição é pretendida (por exemplo, pc-linux-gnu-i586).
  3. Se você ver uma distribuição binária marcada com o sufixo -max, significa que o binário tem suporte para tabelas transacionais e outros recursos. See section 4.8.5 mysqld-max, om servidor mysqld extendido. Note que todos os binários são contruídos a partir da mesma distribuição fonte do MySQL.
  4. Adicione um usuário e grupo para o mysqld ser executado:
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    
    Estes comandos adicionam o grupo mysql e o usuário mysql. A sintaxe para useradd e groupadd podem diferir um pouco nas diversas versões de Unix. Eles tambémpodem ser chamado adduser e addgroup. Você pode desejar criar o grupo e usuário com outro nome, diferente de mysql.
  5. Chame o diretório no qual se pretende fazer a instalação:
    shell> cd /usr/local
    
  6. Descompacte a distribuição, que criará o diretório de instalação. Então crie um link simbólico para aquele diretório:
    shell> gunzip < /path/to/mysql-VERSÃO-SO.tar.gz | tar xvf -
    shell> ln -s full-path-to-mysql-VERSÃO-SO mysql
    
    O primeiro comando cria um diretório chamado `mysql-VERSÃO-SO'. O segundo comando cria um link simbólico para o diretório. Isto torna a referência ao diretório de instalação mais fácil, chamado como `/usr/local/mysql'.
  7. Altere para p diretório de instalação:
    shell> cd mysql
    
    Você encontrará diversos arquivos e subdiretórios no diretório mysql. O mais importante para propósitos de instalação são os subdiretórios `bin' e `scripts'.
    `bin'
    Este diretório contém o programa cliente e o servidor. Você deve adicionar o caminho completo deste diretório a sua variável de ambiente PATH e assim a sua shell encontrará o programa MySQL de forma apropriada. See section F Variáveis de Ambientes do MySQL.
    `scripts'
    Este diretório contém o script mysql_install_db usado para inicializar o banco de dados mysql contendo a tabela de permissões que armazenam o servidor de permissões de acesso.
  8. Caso você desejasse usar o mysqlaccess e a distribuição do MySQL está em um local diferente do padrão, você deve alterar a localização para onde o mysqlaccess espera encontrar o cliente mysql. Edite o script `bin/mysqlaccess' aproximadamente na linha 18. Procure pela linha que se parece com a apresentada abaixo:
    $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
    
    Altere o caminho para o local onde o mysql atualmente está armazaenado em seu sistema. Se você não fizer isto receberá uma mensagem de erro Broken pipe quando executar o mysqlaccess.
  9. Crie as tabelas de permissão do MySQL (necessário apenas se você não tiver instalado o MySQL anteriormente):
    shell> scripts/mysql_install_db
    
    Note que as versões mais antigas que a 3.22.10 iniciam o servidor MySQL quando você executa o mysql_install_db. Isto não ocorre mais.
  10. Altere o proprietário dos binários para o root e o proprietário do diretório de dados para o usuário com o quel você executará o mysqld:
    shell> chown -R root  /usr/local/mysql/.
    shell> chown -R mysql /usr/local/mysql/data
    shell> chgrp -R mysql /usr/local/mysql/.
    
    O primeiro comando altera o atributo owner dos arquivos para o usuário root, o segundo altera o atributo owner do diretório de dados para o usuário mysql e o terceiro altera o atributo group para o grupo mysql.
  11. Se você quiser instalar o suporte para a interface Perl DBI/DBD, veja section 2.7 Comentários de Instalação do Perl.
  12. Se você desejasse que o MySQL seja iniciado automaticamente quando você iniciar a sua máquina, você pode copiar support-files/mysql.server para o local onde o seu sistema tem os arquivos de inicialização. Mais informações podem ser encontradas no script support-files/mysql.server e em section 2.4.3 Inicializando e parando o MySQL automaticamente..

Depois de tudo estar descompactado e instalado, você deve inicializar e testar a sua distribuição.

Você pode iniciar o servidor MySQL com o seguinte comando:

shell> bin/mysqld_safe --user=mysql &

Se a sua versão do MySQl for mais antiga do que a 4.0, substitua bin/safe_mysqld por bin/mysqld_safe no comando.

Agora prossiga com section 4.8.2 mysqld-safe, o wrapper do mysqld e See section 2.4 Configurações e Testes Pós-instalação.

2.3 Instalando uma distribuição com fontes do MySQL

Antes de você continuar com as instalações dos fontes, confira antes se nosso binário está disponível para sua plataforma e se ela funcionará para você. Nós colocamos muito esforço para ter certeza que nossos binários são contruídos com as melhores opções possíveis.

Você precisa das seguintes ferramentas para contruir e instalar o MySQL a partir do código fonte:

Se você estiver usando uma versão recente de gcc, recente o bastante para entender a opção -fno-exceptions, é MUITO IMPORTANTE que você a use. De outra forma, você pode compilar um binário que quebra randomicamente. Nós também recomendamos que você use -felide-constructors e -fno-rtti juntas com -fno-exception. Se estiver com dúvidas, faça o seguinte:


CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions \
       -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \
       --with-mysqld-ldflags=-all-static

Na maioria dos sistemas você irá obter um binário rápido e estável com essas opções.

Se você tiver problemas, SEMPRE USE mysqlbug quando postar questões para a lista de email do MySQL Mesmo se o problema não for um bug, mysqlbug recolhe informações do sistema que facilitará aos outros resolverem seu problema. Por não suar mysqlbug, você perde a vantagem de ter seu problema resolvido! Você irá encontrar mysqlbug no diretório `scripts' depois de desempacotar a distribuição. See section 1.7.1.3 Como relatar erros ou problemas.

2.3.1 Visão geral da instalação rápida

Os comandos básicos que você deve executar para instalar o MysQL a partir da distribuição fonte são:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root  /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

Se a sua versão do MySQL é mais antiga que a 4.0, substitua bin/safe_mysqld por bin/mysqld_safe no comando final.

Se você deseja ter suporte para tabelas InnoDB, você deve editar o arquivo /etc/my.cnf e remover o caractere # antes dos parâmetros que iniciam com innodb_.... See section 4.1.2 Arquivo de Opções `my.cnf'. See section 7.5.3 Opções de Inicialização do InnoDB.

Se você iniciar de um RPM fonte, então faça o seguinte:

shell> rpm --rebuild --clean MySQL-VERSION.src.rpm

Isto irá criar um RPM binário que você pode instalar.

Você pode adicionar novos usuários utilizando o script bin/mysql_setpermission se você instalar os módulos Perl DBI e DBD-mysql.

Segue uma descrição mais detalhada.

Para instalar uma distribuição fonte, siga os passos a seguir, então prossiga para section 2.4 Configurações e Testes Pós-instalação, para inicialização do pós-instalação e testes:

  1. Escolha o diretório sobre o qual você deseja descompactar a distribuição e vá para ele.
  2. Obtenha um arquivo de distribuição de algum dos sites listados em section 2.2.1 Como obter o MySQL.
  3. Se você esta interessado em usar tabelas Berkeley DB com MySQL, você precisará obter uma versão com o patch do código fonte do Berkeley DB. Por favor leia o capítulo sobre tabelas Berkeley DB antes de continuar. See section 7.6 Tabelas BDB ou BerkeleyDB. Distribuições fontes do MySQL são fornecidas como arquivos tar compactados e tem nomes como `mysql-VERSION.tar.gz', onde VERSION é um número como 5.0.1-alpha.
  4. Adicione um usuário e grupo para o mysql executar assim:
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    
    Estes comandos adicionam o grupo mysql e o usuário mysql. A sintaxe para useradd e groupadd podem mudar um pouco em diferentes versões de Unix. Elas podem também ser chamadas adduser e addgroup. Você pode escolher outros nomes para o usuário e grupo em vez de mysql.
  5. Descompacte a distribuição para o diretório corrente:
    shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
    
    Este comando cria um diretório com o nome `mysql-VERSION'.
  6. Mude para o diretório da distribuição descompactada:
    shell> cd mysql-VERSION
    
    Note que agora você deve configurar e construir o MySQL a partir deste diretório raiz da distribuição. Você não pode construí-lo em um diretório diferente.
  7. Configure o release e compile tudo:
    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    
    Quando você executar configure, você pode desejar especificar algumas opções. Execute ./configure --help para uma lista das opções. section 2.3.3 Opções típicas do configure, discute algumas das opções mais usadas. Se o configure falhar, e você for enviar uma mensagem para lista de email do MySQL para pedir ajuda, por favor, inclua qualquer linhas de `config.log' que você acha que pode ajudar a resolver o problema. Também inclua as últimas linhas da saída de configure se o configure abortar. Envie o relatório de erros usando o script mysqlbug. See section 1.7.1.3 Como relatar erros ou problemas. Se a compilação falhar, veja section 2.3.5 Lidando com Problemas de Compilação, para uma ajuda com um varios problemas comuns.
  8. Instalar tudo:
    shell> make install
    
    Você deve executar este comando como root.
  9. Crie as tabelas de permissões do MySQL (necessárias só se você não tiver instalado o MySQL anteriormente):
    shell> scripts/mysql_install_db
    
    Note que as versões do MySQL anteriores à versão 3.22.10 iniciam o servidor MySQL quando você executa mysql_install_db. Isto não acontece mais!
  10. Altere o dono dos binários para root e do diretório dados para o usuário que irá executar o mysqld:
    shell> chown -R root  /usr/local/mysql
    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql
    
    O primeiro comando altera o atributo de proriedade dos arquivos para o usuário root, o segundo altera o atributo de propriedade do diretório de dados para o usuário mysql, e o terceiro altera o atributo de grupo para o grupo mysql.
  11. Se você deseja instalar suporte para a interface Perl DBI/DBD, veja section 2.7 Comentários de Instalação do Perl.
  12. Se você deseja que o MySQL inicie automaticamente quando você ligar sua máquina, você pode copiar support-files/mysql.server para o local onde seu sistema tem seus arquivos de incialização. Mais informações podem ser encontradas no próprio script support-files/mysql.server e em section 2.4.3 Inicializando e parando o MySQL automaticamente..

Depois de tudo ter sido instalado, você deve iniciar e testar sua distribuição usando este comando:

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

Se a sua versão do MySQL for mais antiga do que 4.0, substitua safe_mysqld por mysqld_safe no comando:

Se o comando falhar imediatamente com mysqld daemon ended então você pode achar alguma informação no arquivo `diretório-dados-mysql/'nome_maquina'.err'. A razão pode ser que você já possua outro servidor mysqld sendo executado. See section 4.2 Executando Múltiplos MySQL Servers na Mesma Máquina.

See section 2.4 Configurações e Testes Pós-instalação.

2.3.2 Aplicando patches

Algumas vezes patches aparecem na lista de mensagens ou são colocados na área de patches do MySQL. (http://www.mysql.com/downloads/patches.html).

Para aplicar um patch da lista de mensagens, salve a mensagem em que o patch aparece em um arquivo, mude para o diretório raiz da sua distribuição fonte de seu MySQL e execute estes comandos:

shell> patch -p1 < patch-file-name
shell> rm config.cache
shell> make clean

Patches do site FTP são distribuídos como arquivos texto ou como arquivos compactados com gzip. Aplique um patch no formato texto como mostrado acima para patches da lista de mensagens. Para aplicar um patch compactado, mude para o diretório raiz da árvore fonte do MySQL e execute estes comandos:

shell> gunzip < patch-file-name.gz | patch -p1
shell> rm config.cache
shell> make clean

Depois de aplicar um patch siga as instruções para uma instalação normal a partir dos fontes começando com o passo ./configure. Depois de executar o passo make install, reinicie seu servidor MySQL.

Você pode precisar derrubar algum servidor atualmente em execução antes de executar make install. (Use mysqladmin shutdown para fazer isto.) Alguns sistemas não lhe permitem instalar uma nova versão do programa se ele substitui agum que estiver em execução.

2.3.3 Opções típicas do configure

O script configure fornece uma grande gama de controle sobre como você configura sua distribuição MySQL. Normalmente você faz isto usando opções na linha de comando do configure. Você também pode alterar configure usando algumas variáveis de ambiente. See section F Variáveis de Ambientes do MySQL. Para uma lista de opções suportadas pelo configure, execute este comando:

shell> ./configure --help

Algumas das opções mais usadas normalmente com o configure estão descritas a seguir:

2.3.4 Instalando pela árvore de fontes do desenvolvimento

CUIDADO: Você deve ler esta seção somente se você estiver interessado em nos ajudar a testar nossos novos códigos. Se você só deseja deixar o MySQL funcionando em seus sistema, você deve usar uma distribuição padrão (pode ser uma distribuição binária ou fonte).

Para obter noss mais nova árvore de desenvolvimento, use estas instruções:

  1. Faça download do BitKeeper em http://www.bitmover.com/cgi-bin/download.cgi. Você precisará do Bitkeeper 3.0 ou posterior para acessar nosso repositório.
  2. Siga as instruções para instalá-lo.
  3. Depois que o BitKeeper estiver instalado, primeiro vá ao diretório no qual você deseja trabalhar e então use um dos seguintes comandos para clonar o ramo da versão MySQL de sua escolha: Para clonar o ramo 3.23 (antigo), use este comando:
    shell> bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23
    
    Para clonar o ramo 4.0 (estável/produção), use este comando:
    shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
    
    Para clonar o ramo 4.1 alfa, use este comando:
    shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
    
    Para clonar o ramo de desenvolvimento 5.0, use este comando:
    shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0
    
    Nos exemplos anteriores a árvore binária será configurada no subdiretório `mysql-3.23/', `mysql-4.0/', `mysql-4.1/', ou `mysql-5.0/' do diretório atual. Se você está atrás de um firewall e só pode iniciar conexões HTTP, você também pode o BitKeeper via HTTP. Se vocÊ precisa usar um servidor proxy, simplesmente configure a variável de ambiente http_proxy para apontar para o seu proxy:
    shell> export http_proxy="http://seu.servidor.proxy:8080/"
    
    Agora, simplesmente substitua o bk:// com o http:// ao fazer um clone. Exemplo:
    shell> bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1
    
    O download inicial da árvore fonte pode demorar um pouco, dependendo da velocidade de sua conexão; seja paciente.
  4. Você precisará do GNU make, autoconf 2.53 (ou posterior), automake 1.5, libtool 1.4 e m4 para executar o próximo conjunto de comandos. Embora muitos sistemas operacionais já venham com suas próprias implementações do make, as chances de que a sua compilação falhe com mensagens de erros estranhas são altas. Consequentemente é altamente recomendado usar o GNU make (algumas vezes também chamado gmake). Felizmente, um grande número de sistemas operacionais já vem com a ferramente GNU pré instalada ou são fornecidos pacotes de instalação da mesma. De qualquer forma, elas podem ser encontradas nos seguintes locais: Se você estiver tentando configurar o MySQL 4.1 você também precisará do bison 1.75. Versões mais antigas do bison podem exiobir este erro: sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded. Nota: o tamanho máximo da tabela não é realmente excedido, o erro é causado por um bug nas versões mais novas do bison. Versões do MySQL anteriores a 4.1 podem também compilar com outras implementações yacc (e.g. BSD yacc 91.7.30). Para versões posteriores, GNU bison é uma exigência. O comando comum para fazer em uma shell é:
    cd mysql-4.0
    bk -r edit
    aclocal; autoheader; autoconf; automake
    (cd innobase; aclocal; autoheader; autoconf; automake) # for InnoDB
    (cd bdb/dist; sh s_all ) # for Berkeley DB
    ./configure  # Adicione suas opções favoritas aqui
    make
    
    Caso apareçam alguns erros estranhos durantes este estágio, confira se você realmente tem a libtool instalada! Uma coleção de nossos scripts de configuração padrões está localizada no subdiretório `BUILD/'. Se preferir, você pode usar `BUILD/compile-pentium-debug'. Para compilar em uma arquitetura diferente, modifique o script removendo opções que são específicas da arquitetura Pentium.
  5. Quando a construção estiver pronta, execute make install. Seja cuidadoso com isto em uma máquina de produção; o comando pode sobrescrever sua versão atual instalada. Se você tem outra instalação do MySQL, nós recomendamos que você execute ./configure com valores diferentes para as opções prefix, tcp-port e unix-socket-path que as usadas pelo seu servidor em produção.
  6. Seja rígido com sua nova instalação e tente fazer com que os novos recursos falhem. Inicie executando make test. See section 14.1.2 Pacotes de Teste do MySQL.
  7. Se você chegar ao estágio make e a distribuição não compilar, por favor relate-o para bugs@lists.mysql.com. Se você instalou as últimas versões das ferramentas GNU exigidas, e elas falharam tentando processar nossos arquivos de configuração, por favor informe isto também. Entretanto, se você executar aclocal e obtêm um erro de command not found não o reporte.Tenha certeza que todas as ferramentas necessárias estejam instaladas e que sua variável PATH esteja corretamente configurada para que sua shell possa encontrá-la.
  8. Depois da operação inicial bk clone para obter a árvore fonte, você deve executar bk pull periodicamente para obter as atualizações.
  9. Você pode examinar o histórico de alterações para a árvore com todos os diffs usando bk sccstool. Se você ver alguns diffs estranhos ou código sobre o qual você tenha alguma dúvida, não hesite em enviar um e-mail para lista de email ``internals'' do MySQL. See section 1.7.1.1 As Listas de Discussão do MySQL. Além disso, se você acha que tem uma idéia melhor em como fazer algo, envie um email para o mesmo endereço com um patch. bk diffs irá produzir um patch para você após fazer as alterações no código fonte. Se você não tiver tempo para codificar sua idéia, apenas envie uma descrição.
  10. BitKeeper tem um ótimo utilitário de ajudar que você pode acessar via bk helptool.
  11. Note que qualquer commit (bk ci ou bk citool) irá disparar o envio da mensagem com as alterações para nossa lista de email internos, bem como a submissão openlogging.org usual apenas com os comentários da alteração. Geralmente você não precisar usar commit (já que o árvore pública não permitirá bk push), mas é preferível usar o método bk diffs descrito arteriormente.

Você também pode procurar alterações, comentários e código fonte online procurando por ex. http://mysql.bkbits.net:8080/mysql-4.1 para MySQL 4.1.

O manual está em uma árvore separad que pode ser clonada com:

shell> bk clone bk://mysql.bkbits.net/mysqldoc mysqldoc

Existe também um árvore pública do BitKeeper para o MySQL Control Center e Connector/ODBC. Eles podem ser clonados da seguintes forma, respectivamente:

Para clonar o MySQL Control center, use o seguinte comando:

shell> bk clone http://mysql.bkbits.net/mysqlcc mysqlcc

Para clonar o Connector/ODBC, use o seguinte comando:

shell> bk clone http://mysql.bkbits.net/myodbc3 myodbc3

2.3.5 Lidando com Problemas de Compilação

Todos programas MySQL compilam de forma limpa sem alertas no solaris usando gcc. Em outros sistemas, alertas podem ocorrer devido a diferenças em arquivos include dos sistemas. Veja section 2.3.6 Notas MIT-pthreads para avisos que podem ocorrer usando MIT-pthreads. Para outros problemas, confira a lista abaixo.

A solução para vários problemas envolve reconfiguração. Se você precisa reconfigurar, faça notas do seguinte:

Para prevenir antigas informações de configurações ou arquivos objetos de serem usados, execute estes comandos antes de re-executar configure:

shell> rm config.cache
shell> make clean

Uma alternativa, seria executar make distclean

A lista abaixo descreve alguns dos problemas compilando o MySQL que tem sido encontrados com mais frequencia:

2.3.6 Notas MIT-pthreads

Esta seção descreve alguns dos detalhes envolvidos no uso de MIT-pthreads.

Note que no Linux você NÃO deve usar MIT-pthreads mas instalar LinuxThreads! See section 2.6.2 Notas Linux (Todas as versões).

Se seu sistema não fornece suporte nativo a thread, você precisará construir o MySQL usando o pacote MIT-pthreads. Isto inclui antigos sistemas FreeBSD, SunOS 4.X, Solaris 2.4 e anteriores entre outros. See section 2.2.6 Sistemas Operacionais suportados pelo MySQL.

Note que a partir do MySQL 4.0.2, MIT-pthreads não fazem mais parte da distribuição fonte. Se você precisar deste pacote, você precisa fazer o download dele separadamente em http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz

Depois do download, extraia este arquivo fonte no nível mais alto do diretório de fontes do MySQL. Ele criará um novo subdiretório mit-pthreads.

2.3.7 Instalando o MySQL a partir do Fonte no Windows

Estas instruções descrevem como construir o binário do MySQL a partir do fonte paras versões 4.1 e acima no Windows. As instruções são fornecidas para construir binários a partir de uma distribuição fonte padrão ou a partir da árvore do BitKeeper que contém o fonte do desenvolvimento mais atuais.

Nota: As instruções neste documento estão restritas aos usuários que queiram testar o MySQL no Windows a partir da última distribuição fonte ou da árvore do BitKeeper. Para uso em produção, a MySQL AB não aconselha que você utilize um servidor MySQL construído por você mesmo a partir de um fonte. Normalmente é melhor usar uma distribuição binária precompilada do MySQL que é construída especificamente para desempenho otimizado no Windows pela MySQL AB. Instruções para instalar uma distribuição binária está disponível em section 2.1.1 Instalando o MySQL no Windows.

Para construir o MySQL no Windows a partir do fonte, você precisa dos seguintes compiladores e recursos disoníveis em seu sistema Windows:

Você também precisará de um distribuição fonte para o Windows. Existem dois modos de conseguir uma distribuição fonte do MySQL versão 4.1 e acima:

  1. Obtenha um pacote de uma distribuição fonte pela MySQL AB para a versão do MySQL que você está particularmente interessado. Distribuições fontes empacotadas estão disponíveis para versões distribuídas do MySQ e podem ser obtidas em http://www.mysql.com/downloads/.
  2. Você pode empacotar um distribuição fonte você mesmo a partir da ultima árvore fonte de desenvolvimento do BitKeeper. Se você planeja fazer isto, você deve criar o pacote em um sistema Unix e então transfrí-lo para seu sistema Windows. (A razão para isto é que alguns dos passos de configuração e construção exigem ferramentas que funcionam apenas no Unix.) A abordagem do BitKeeper, exige:

Se você estiver usando uma distribuição fonte do Windows, você pode ir diretamente para section 2.3.7.1 Construindo o MySQL Usando VC++. Para contruir a partir da árvore do BitKeeper, vá para section 2.3.7.2 Criando um Pacote Fonte do Windows a partir da Última Fonte de Desenvolvimento.

Se você encontrar alguma coisa que não está funcionando como esperado, ou tiver sugestões sobre o mode de melhorar o processo de construção atual no Windows, envie uma mensagem para a lista de email win32. See section 1.7.1.1 As Listas de Discussão do MySQL.

2.3.7.1 Construindo o MySQL Usando VC++

Nota: O MySQL 4.1 e arquivos do espeço de trabalho do VC++ são compatíveis com o Microsoft Visual Studio 6.0 e as edições acima (7.0/.NET) e testados pela equipe da MySQL AB antes de cada distribuição.

Siga este procedimento para construir o MySQL:

  1. Crie um diretório de trabalho (ex.: `workdir').
  2. Descompacte a distribuição fonte no diretório mencionado acima usando Winzip ou outra ferramenta que possa ler arquivos `.zip'.
  3. Inicie o compilador VC++ 6.0.
  4. No menu File, selecione Open Workspace.
  5. Abra o workspace `mysql.dsw' que você encontrar no diretório de trabalho.
  6. No menu Build, selcione o menu Set Active Configuration.
  7. Clique sobre a tela selecionada mysqld - Win32 Debug e clique OK.
  8. Pressione F7 para iniciar a construção da depuração do servidor, bibliotecas e alguns aplicativos clientes.
  9. Compile as versões distribuídas que você desejar, do mesmo modo.
  10. Versões depuradas dos programas e bibliotecas são colocados nos diretórios `client_debug' e `lib_debug'. Versões liberadas dos programas e bibliotecas são colocados nos diretórios `client_release' e `lib_release'. Note que se você quiser construir tanto versões liberadas quanto depuradas você pode selecionar a opção ``build all'' do menu Build.
  11. Teste o servidor. O servidor construído usando as instruções anteriores irá esperar que o diretório base e de dados do MySQL seja `C:\mysql' e `C:\mysql\data' por padrão. Se você quiser testar o seu servidor usando o diretório raiz de uma árvore fonte e seu diretório de dados como o diretório base e o diretório de dados, você precisará dizer ao servidor os seus caminhos. Você também pode fazer into na linha de comando com as opções --basedir e --datadir, ou colocar opções apropriadas no arquivo de opções (o arquivo `C:\my.cnf' ou `my.ini' no diretório do Windows). Se você tiver um diretório de dados existente em qualquer lugar que você queira usar, você pode especificá-lo no se caminho.
  12. Inicie o ser servidor a partir do diretório `client_release' ou `client_debug', dependendo de qual servidor você queira usar. O instruções gerais de inicializaão do servidor estão em section 2.1.1 Instalando o MySQL no Windows. Você precisará adaptar as instruções de forma apropriada se você quiser usar um diretório base ou diretório de dados diferente.
  13. Quando o servidor está em execução de modo independente ou como um serviço daseado em sua configuração, tente se conectar a ele pelo utilitário interativo mysql de linha de comando que existe em seu diretório `client_release' ou `client_debug'.

Quando você estiver certo de que os programas que você construiu estão funcionando corretamente, pare o servidor. Então instale o MySQL da seguinte forma:

  1. Crie o diretório para instalar os arquivos do MySQL. Por exemplo, para instalar dentro de `C:\mysql'), use estes comandos:
    C:
    mkdir \mysql
    mkdir \mysql\bin
    mkdir \mysql\data
    mkdir \mysql\share
    mkdir \mysql\scripts
    
    Se você quiser compilar outros clientes e ligá-los ao MySQL, você também deve criar diversos diretórios adicionais:
    mkdir \mysql\include
    mkdir \mysql\lib
    mkdir \mysql\lib\debug
    mkdir \mysql\lib\opt
    
    Se você quiser fazer um benchamrk do MySQL, crie este diretório:
    mkdir \mysql\sql-bench
    
    Benchmark exigem suporte Perl.
  2. Copie do diretório workdir para o diretório c:\mysql os seguintes diretórios:
    copy client_release\*.exe C:\mysql\bin
    copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe
    xcopy scripts\*.* C:\mysql\scripts /E
    xcopy share\*.* C:\mysql\share /E
    
    Se você quiser compilar outros clientes e ligá-los ao MySQL, você também deve fazer isto:
    copy lib_debug\mysqlclient.lib C:\mysql\lib\debug
    copy lib_debug\libmysql.* C:\mysql\lib\debug
    copy lib_debug\zlib.* C:\mysql\lib\debug
    copy lib_release\mysqlclient.lib C:\mysql\lib\opt
    copy lib_release\libmysql.* C:\mysql\lib\opt
    copy lib_release\zlib.* C:\mysql\lib\opt
    copy include\*.h C:\mysql\include
    copy libmysql\libmysql.def C:\mysql\include
    
    Se você quiser fazer um benchmark do MySQL, você também deve fazer isto:
    xcopy sql-bench\*.* C:\mysql\bench /E
    

Configure e inicie o servidor da mesma forma que a distribuição binária do Windows. See section 2.1.1.3 Preparando o Ambiente MySQL do Windows.

2.3.7.2 Criando um Pacote Fonte do Windows a partir da Última Fonte de Desenvolvimento

Para construir o último pacote fonte do Windows a partir da arvoré fonte atual do BitKeeper, use as seguintes instruções. Por favor, note que este procedimento deve ser realizado em um sistema executando um sistema opercional Unix ou similar. (Sabe-se que este procedimento funciona bem com o Linux, por exemplo.)

  1. Clone a árvore fonte do BitKeeper para o MySQL (versão 4.1 ou acima, como desejado). Para mais informações sobre como clonar a árvore fonte veja as instruções em section 2.3.4 Instalando pela árvore de fontes do desenvolvimento.
  2. Configure e construa as distribuições para que você tenha um binário do servidor para trabalhar. Um modo de se fazer isto é executar o seguinte comando no diretório de mais alto nível de sua árvore fonte:
    shell> ./BUILD/compile-pentium-max
    
  3. Depois de se certificar que o processo de construção foi completado com sucesso, execute o seguinte script utilitário a a partir do diretório de nível mais alto da sua arvore fonte:
    shell> ./scripts/make_win_src_distribution
    
    Este script cria um pacote fonte Windows. para ser usado em seu sistema Windows. Você pode fornecer diferentes opções para o script baseado em suas necessidades. Ele aceita as seguintes opções:
    --debug   Depura, sem criar o pacote
    --tmp     Especifica a localização temporária
    --suffix  Nome de sufixo para o pacote
    --dirname Nome do diretório onde os arquivos são copiados (intermediario)
    --silent  Não apresenta uma lista dos arquivos processados
    --tar     Cria um pacote tar.gz em vez de .zip
    --help    Mostra esta mensagem de ajuda
    
    Por padrão, make_win_src_distribution cria um arquivo zipado com o nome `mysql-VERSION-win-src.zip', onde VERSION representa a versão de sua árvore fonte do MySQL.
  4. Faça uma copia ou upload para a sua máquina o pacote fonte Windows que você tiver criado. Para compilá-lo use as instruções em section 2.3.7.1 Construindo o MySQL Usando VC++.

2.4 Configurações e Testes Pós-instalação

Uma vez instalado o MySQL (de uma distribuição binária ou fonte), você deve inicializar as tabelas de concessões, iniciar o servidor e ter certeza que o servidor está funcionando bem. Você pode também desejar que o servidor inicie e pare automaticamente quando seu sistema iniciar e desligar.

Normalmente você instala as tabelas de concessões e inicia o servidor assim para instalações baseadas em uma distribuição fonte:

shell> ./scripts/mysql_install_db
shell> cd diretorio_instalação_mysql
shell> ./bin/mysqld_safe --user=mysql &

Para uma distribuição binária (sem ser pacotes RPM ou PKG), faça isto:

shell> cd diretorio_instalação_mysql
shell> ./bin/mysql_install_db
shell> ./bin/mysqld_safe --user=mysql &

O script mysql_install_db cria o banco de dados mysql que irá armazenar todos privilégios do banco de dados, o banco de dados test que você poderá usar para testar o MySQL e também entradas de privilégio para o usuário que usa o mysql_install_db e o usuário root. As estrandas são criadas sem senhas. O script mysqld_safe inicia o servidor mysqld. (Se sua versão for anterior a 4.0, use safe_mysqld em vez de mysqld_safe.)

mysql_install_db não irá sobrescrever nenhuma tabela de privilégios antiga, então deve ser seguro executá-lo em quaisquer circunstâncias. Se você não deseja ter o banco de dados test você pode removê-lo com mysqladmin -u root drop test depois de iniciar o servidor.

Testes são geralmente facilmente feitos de um diretório raiz da distribuição MySQL. Para uma distribuição binária, este é seu diretório de instalação (normalmente algo como `/usr/local/mysql'). Para uma distrubuição fonte, este é o diretório principal da sua árvore fonte do MySQL.

Nos comandos mostrados abaixo nesta seção e nas seguintes subseções, BINDIR é o caminho para a localização na qual os programas como mysqladmin e mysqld_safe estão instalados. Para uma distribuição binária este é o diretório `bin'. Para uma distribuição fonte, BINDIR é provavelmente `/usr/local/bin', a menos que você especifique um diretório de instalação diferente de `/usr/local' quando você executa configure. EXECDIR é a localização na qual o servidor mysqld está instalado. Para uma distribuição binária, isto é o mesmo que BINDIR. Para uma distribuição fonte, EXECDIR é provavelmente `/usr/local/libexec'.

Os testes são descritos em detalhes abaixo:

  1. Se necessário, inicie o servidor mysqld e configure as tabelas de concessões iniciais contendo os privilégios que determinam como os usuários estão permitidos a conectar ao servidor. Isto é feito normalmente com o script mysql_install_db:
    shell> scripts/mysql_install_db
    
    Normalmente, mysql_install_db precisa ser executado somente na primeira vez que você instala o MySQL. Portanto, se você estiver atualizando uma instalação existente, você pode pular este passo. (entretanto, mysql_install_db é realmente seguro de usar e não irá atualizar nenhuma tabela que já exista, então se você não tem certeza do que fazer, você pode sempre executar mysql_install_db.) mysql_install_db cria seis tabelas (user, db, host, tables_priv, columns_priv e func) no banco de dados mysql. Uma descrição dos privilégios iniciais é fornecido em section 4.4.4 Configurando os Privilégios Iniciais do MySQL. De forma resumidao, estes privilégios permitem que o usuário root faça qualquer coisa no MySQL, e permitem a qualquer um a criar ou usar bancos de dados com o nome de 'test' ou iniciando com 'test_' . Se você não configurar as tabelas de concessões, o seguinte erro irá aparecer no arquivo log quando você não iniciar o servidor:
    mysqld: Can't find file: 'host.frm'
    
    O erro acima pode também ocorrer com uma distribuição binária do MySQL se você não iniciar o MySQL executando o ./bin/mysqld_safe! See section 4.8.2 mysqld-safe, o wrapper do mysqld. Você deve precisar executar mysql_install_db como root. Entretanto, se você preferir, pode executar o servidor MySQL como um usuário (não-root) sem privilégios, desde que o usuário possa ler e escrever arquivos no diretório de banco de dados. Instruções para executar o MySQL como um usuário sem privilégios é detalhado em section A.3.2 Como Executar o MySQL Como Um Usuário Normal Se você tiver problemas com o mysql_install_db, veja section 2.4.1 Problemas Executando o mysql_install_db. Existem algumas alternativas para executar o script mysql_install_db como ele é fornecido na distribuição MySQL: Para maiores informações sobre estas alternativas, veja section 4.4.4 Configurando os Privilégios Iniciais do MySQL.
  2. Inicie o servidor MySQL assim:
    shell> cd diretorio_instalacao_mysql
    shell> bin/mysqld_safe &
    
    Se a sua versão do MySQL for mais antiga do que 4.0, substitua bin/safe_mysqld por bin/mysqld_safe no comando: Se você tiver problemas iniciando o servidor, veja section 2.4.2 Problemas Inicializando o Servidor MySQL.
  3. Use mysqladmin para verificar se o servidor está em execução. Os seguintes comandos fornecem um teste simples para conferir se o servidor está em funcionamento e respondendo às conexões:
    shell> BINDIR/mysqladmin version
    shell> BINDIR/mysqladmin variables
    
    A saída de mysqladmin version varia muito pouco dependendo de sua plataforma e versão do MySQL, mas deve ser similar a esta mostrada abaixo:
    shell> BINDIR/mysqladmin version
    mysqladmin  Ver 8.14 Distrib 3.23.32, for linux on i586
    Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license.
    
    Server version          3.23.32-debug
    Protocol version        10
    Connection              Localhost via Unix socket
    TCP port                3306
    UNIX socket             /tmp/mysql.sock
    Uptime:                 16 sec
    
    Threads: 1  Questions: 9  Slow queries: 0
    Opens: 7  Flush tables: 2  Open tables: 0
    Queries per second avg: 0.000
    Memory in use: 132K  Max memory used: 16773K
    
    Para ter uma idéia do que você pode fazer com BINDIR/mysqladmin, invoque-o com a opção --help.
  4. Verifique se você pode desligar o servidor:
    shell> BINDIR/mysqladmin -u root shutdown
    
  5. Verifique que você possa reiniciar o servidor. Faça isto usando mysqld_safe ou chamado o mysqld diretamente. Por exemplo:
    shell> BINDIR/mysqld_safe --log &
    
    Se o mysqld_safe falhar, tente executá-lo do diretório de instalação do MySQL (se você já não estiver lá). Se não funcionar, veja section 2.4.2 Problemas Inicializando o Servidor MySQL.
  6. Execute alguns testes básicos para verificar se o servidor está funcionando. A saída deve ser similar ao mostrado abaixo:
    shell> BINDIR/mysqlshow
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    +-----------+
    
    shell> BINDIR/mysqlshow mysql
    Database: mysql
    +--------------+
    |    Tables    |
    +--------------+
    | columns_priv |
    | db           |
    | func         |
    | host         |
    | tables_priv  |
    | user         |
    +--------------+
    
    shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
    +------+--------+------+
    | host | db     | user |
    +------+--------+------+
    | %    | test   |      |
    | %    | test_% |      |
    +------+--------+------+
    
    Também existe uma suite de benchmark no diretório `sql-bench' (sob o diretório de instalação do MySQL) que você pode usar para comparar como o MySQL se comporta em diferentes plataformas. O diretório `sql-bench/Results' contém os resultados de várias execuções em diferentes bancos de dados e plataformas. Os seguintes módulos Perl adicionais são necessários para executar o pacote de benchamrk:
    DBI
    DBD-mysql
    Data-Dumper
    Data-ShowTable
    
    Estes módulos podem ser obtidos em CPAN http://www.cpan.org/. See section 2.7.1 Instalando Perl no Unix. O diretório `sql-bench/Results' contém os resultados de várias execuções em diferentes bancos de dados e plataformas. Para executar todos testes, execute estes comandos:
    shell> cd sql-bench
    shell> run-all-tests
    
    Se você não possui o diretório `sql-bench', você provavelmente está usando uma distribuição binária RPM. (Distribuições fontes RPMs incluem o diretório com os benchmarks.) Neste caso, você deve primeiramente instalar a suite de benchmark antes de poder usá-lo. A partir da versão 3.22 do MySQL, começaram a existir arquivos RPMs de benchmark chamados `mysql-bench-VERSION-i386.rpm' que contém código ie dados de benchmark. Se você tem uma distribuição fonte, você também pode executar os testes no subdiretório `tests'. Por exemplo, para executar `auto_increment.tst', faça isto:
    shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
    
    Os resultados esperados são mostrados no arquivo `./tests/auto_imcrement.res'.

2.4.1 Problemas Executando o mysql_install_db

O propósito do script mysql_install_db é gerar novas tabelas de privilégios. Ele não irá afeter nenhum outro dado! Ele também não fará nada se você já tem a tabela de privilégio do MySQL instalada.

Se você deseja refazer suas tabelas de privilégios, você deve desligar o servidor mysqld, se ele já está executando, então faça assim:

mv diretorio-dados-mysql/mysql diretorio-dados-mysql/mysql-old
mysql_install_db

Esta seção relaciona alguns problemas que podem ser encontrados ao executar mysql_install_db:

mysql_install_db não instala as tabelas de permissões
Você pode descobrir que o mysql_install_db falha ao instalar as tabelas de permissões e termina depois de mostrar as seguintes mensagens:
starting mysqld daemon with databases from XXXXXX
mysql daemon ended
Neste caso, você deve examinar o arquivo de log com muito cuidado! O log deve se encontrar no diretório `XXXXXX' nomeado pela mensagem de erro, e deve indicar porque mysqld não inicializa. Se você não entende o que aconteceu, inclua o log quando você postar um relato de erro usando mysqlbug! See section 1.7.1.3 Como relatar erros ou problemas.
Já existe um daemon mysqld sendo executado
Neste caso, provavelmente não será necessário executar o mysql_install_db. Você deve executar o mysql_install_db somente uma vez, quando você instalar o MySQL da primeira vez.
Instalair um segundo daemon mysqld não funciona quando um daemon
estiver em execução. Isto pode acontecer quando você já tiver uma instalação do MySQL existente, mas deseja colocar uma nova instalação em um diferente lugar (por exemplo, para testes, ou talvez você simplesmente deseja executar duas instalações ao mesmo tempo). Geralmente o problema que ocorre quando você tenta executar o segundo servidor é que ele tenta usar o mesmo socket e porta que o outro. Neste caso você irá obter a mensagem de erro: Can't start server: Bind on TCP/IP port: Address already in use ou Can't start server: Bind on unix socket.... See section 4.2 Executando Múltiplos MySQL Servers na Mesma Máquina.
Você não tem direito de escrita no diretório `/tmp'
Se você não tem direito de escrita para criar um arquivo socket no local padrão (em `/tmp') ou permissão para criar arquivos temporáris em `/tmp,' você irá obter um erro quando executar mysql_install_db ou quando iniciar ou usar mysqld. Você pode especificar socket e diretório temporário diferentes, como segue:
shell> TMPDIR=/algum_dir_tmp/
shell> MYSQL_UNIX_PORT=/algum_dir_tmp/mysqld.sock
shell> export TMPDIR MYSQL_UNIX_PORT
See section A.4.5 Como Proteger ou AlterarHow to Protect or Change the MySQL Socket File `/tmp/mysql.sock'. `algum_dir_tmp' deve ser o caminho para o mesmo diretório no qual você tem permissão de escrita. See section F Variáveis de Ambientes do MySQL. Depois disto você deve estar apto para executar mysql_install_db e iniciar o servidor com estes comandos:
shell> scripts/mysql_install_db
shell> BINDIR/mysqld_safe &
mysqld falha imediatamente
Se você estiver executando RedHat Versão 5.0 com uma versão de glibc anterior a 2.0.7-5 você deve ter certeza que você instalou todos os patches para a glibc! Existe muita informação sobre isto nos arquivos das listas de mensagens do MySQL. Links para os arquivos de correio estão disponíveis online em http://lists.mysql.com/. Veja também section 2.6.2 Notas Linux (Todas as versões). Você pode também iniciar o mysqld manualmente usando a opção --skip-grant-tables e adicionar a informação de privilégios usando o mysql:
shell> BINDIR/mysqld_safe --skip-grant-tables &
shell> BINDIR/mysql -u root mysql
Do mysql, execute manualmente os comandos SQL em mysql_install_db. Tenha certeza de executar mysqladmin flush_privileges ou mysqladmin reload após dizer ao servidor para recarregar as tabelas de permissões.

2.4.2 Problemas Inicializando o Servidor MySQL

Se você for usar tabelas que suportem transações (BDB, InnoDB), primeiro deve-se criar um arquivo my.cnf e configurar opções de inicialização para os tipos de tabelas que você planeja usar. See section 7 Tipos de Tabela do MySQL.

Geralmente, você inicia o servidor mysqld de uma das três maneiras:

Quando o daemon mysqld inicia, ele altera o diretório para o diretório de dados. É neste diretório que ele espera gravar arquivos de log e o arquivo pid (com o ID do processo) e onde ele espera encontrar os bancos de dados.

A localização do diretório de dados é especificada quando a distribuição é compilada. Entretanto, se o mysqld espera encontrar o diretório de dados em lugar diferente de onde ele realmente está no seu sistema, ele não funcionará corretamente. Se você tiver problemas com caminhos incorretos você pode encontrar quais opções o mysqld permite e quais são as configurações do caminho padrão chamando o mysqld com a opção --help. Você pode sobrescrever os padrões especificando os caminhos corretos como argumentos de linha de comando ao mysqld. (Estas opções também podem ser usadas com o mysqld_safe).

Normalmente você precisaria indicar ao mysqld somente o diretório base sob o qual o MySQL é instalado. Você pode fazer isso usando a opção --basedir. Você pode também usar --help para conferir o efeito das opeções para se alterar o caminho (perceba que --help deve ser a opção final do comando mysqld. Por exemplo:

shell> EXECDIR/mysqld --basedir=/usr/local --help

Uma vez que você determina as configurações de caminho que você deseja, inicie o servidor sem a opção --help.

Qualquer que tenha sido o método utilizado para iniciar o servidor, se houver falha na inicialização, confira o arquivo de log para ver se você pode entender o porquê. Arquivos log estão localizados no diretório dados (normalmente `/usr/local/mysql/data' para uma distribuição binária, `/usr/local/var' para uma distribuição fonte, `\mysql\data\mysql.err' no Windows.) Procure no diretório de dados por arquivos com nomes no formato `nome_maquina.err' e `nome_maquina.log' onde nome_maquina é o nome do servidor. Então confira as últimas linhas destes arquivos:

shell> tail nome_maquina.err
shell> tail nome_maquina.log

Se você encontrar algo como o seguinte no arquivo log:

000729 14:50:10  bdb:  Recovery function for LSN 1 27595 failed
000729 14:50:10  bdb:  warning: ./test/t1.db: No such file or directory
000729 14:50:10  Can't init databases

Significa que você não inicializou o mysqld com --bdb-no-recover e o Berkeley DB encontrou algo errado com seus arquivos log quando ele tentou recuperar seus bancos de dados. Para poder continuar, você deve mover o antigo arquivo log Berkeley DB do diretório do banco de dados para outro lugar, onde poderá examiná-los posteriormente. Os arquivos log são nomeados `log.0000000001', onde o número irá incrementar com o tempo.

Se você estiver executando o mysqld com suporte a tabelas BDB e o mysqld falhar no início, pode ser devido a alguns problemas com o arquivo de recuperação BDB. Neste caso você pode tentar iniciar o mysqld com --bdb-no-recover. Se isto ajudar, então você pode remover todos os arquivos `log.*' do diretório de dados e tentar iniciar o mysqld novamente.

Se você obter o seguinte erro, significa que algum outro programa (ou outro servidor mysqld) já está usando a porta TCP/IP ou socket mysqld está tentando usar:

Can't start server: Bind on TCP/IP port: Address already in use
  ou
Can't start server: Bind on unix socket...

Use ps para ter certeza que você não tem outro servidor mysqld em execução. Se você não consegue encontrar outro servidor, você pode tentar executar o comando telnet sua_maquina numero_porta_tcp-ip e apertar ENTER várias vezes. Se você não obter uma mensagem como telnet: Unable to connect to remote host: Connection refused, algo está usando a mesma porta TCP/IP que o mysqld está tentando usar. Veja section 2.4.1 Problemas Executando o mysql_install_db e section 4.2 Executando Múltiplos MySQL Servers na Mesma Máquina.

Se o mysqld está atualmente em execução, você pode verificar as configurações que ele está usando executando este comando:

shell> mysqladmin variables

ou

shell> mysqladmin -h 'your-host-name' variables

Se você obter o Errcode 13, que significa Permission denied, ao iniciar o mysqld isto significa que você não pode ter o direito de leitura/criação de arquivos no diretório do banco de dados ou log. Neste caso você também deve iniciar o mysqld como usuário root ou alterar a permissão para os arquivos e diretórios envolvidos para uqe você tenha o direito de usá-los.

Se o mysqld_safe inicia o servidor mas você não consegue se conectar a ele, tenha certeza que você tem uma entrada no arquivo `/etc/hosts' que parece com isto:

127.0.0.1       localhost

Este problema só ocorre em sistemas que não possuem uma biblioteca thread funcional e para o qual o MySQL deve estar configurado para usar MIT-pthreads.

Se você não consegue iniciar o mysqld você pode tentar criar um arquivo para rastreamento de erros (trace) para encontrar o problema. See section E.1.2 Criando Arquivos Trace (Rastreamento).

Se você estiver utilizando tabelas InnoDB, procure pelas opções especificas de inicialização do InnoDB. See section 7.5.3 Opções de Inicialização do InnoDB.

Se você estiver usando tabelas BDB (Berkeley DB), você deve se familiarizar com as diferentes opções especificas de inicialização do BDB. section 7.6.3 Opções de Inicialização do BDB.

2.4.3 Inicializando e parando o MySQL automaticamente.

Os scripts mysql.server e mysqld_safe podem ser usados para iniciar o servidor automaticamente na inicialização do sistema. mysql.server também pode ser usado para parar o servidor.

O script mysql.server pode ser usado para inicializar ou parar o servidor utilizando-o com os argumentos start ou stop:

shell> mysql.server start
shell> mysql.server stop

mysql.server pode ser encontrado no diretório `share/mysql' sob o diretório de instalação do MySQL ou no diretório `support-files' da árvore fonte do MySQL.

Note que se você usa o pacote RPM do Linux (MySQL-server-VERSÃO.rpm), o script mysql.server já estará instalada como `/etc/init.d/mysql' - você não precisa instalá-lo manualmente. Veja section 2.1.2 Instalando o MySQL no Linux para mais informações sobre pacotes RPM Linux.

No Mac OS X, você pode instalar um pacote do MySQL Startup Item separado para habilitar a inicialização automática do MySQL no boot so sistema. Veja section 2.1.3 Instalando o MySQL no Mac OS X para maiores detalhes.

Antes do mysql.server iniciar o servidor, ele vai para o diretório de instalação do MySQL, e então chama o mysqld_safe. Você pode precisar editar o mysql.server se tiver uma distribuição binária instalada em um local não-padrão. Modifique-o para chamar o diretório (cd) apropriado antes de executar o safe_mysql. Se você deseja que o servidor seja executado com um usuário específico, adicione uma linha user apropriada para o arquivo `/etc/my.cnf', como será visto posteriormente nesta seção.

mysql.server stop desliga o servidor MySQL enviando um sinal para ele. Você pode desligar o servidor manualmente executando mysqladmin shutdown.

Você precisa adicionar estes comandos start e stop nos lugares apropriados de seus arquivos `/etc/rc.*' quando você quiser iniciar o MySQL automaticamente no seu servidor.

On most current Linux distributions, it is sufficient to copy the file mysql.server into the `/etc/init.d' directory (or `/etc/rc.d/init.d' on older Red Hat systems). Afterwards, run the following command to enable the startup of MySQL on system bootup:

shell> chkconfig --add mysql.server

No FreeBSD o script de inicialização normalmente deve ir no diretório `/usr/local/etc/rc.d/'. A página do manual rc(8) também diz que os scripts neste diretório só são executados, se o seu nome de base corresponder padrão global da sheel *.sh. Qualquer outro arquivo ou diretório presente dentro do diretório são silenciosamente ignorados. Em outra palavras, no FreeBSD você deve instalar o arquivo `mysql.server' como `/usr/local/etc/rc.d/mysql.server.sh' para habilitar a inicialização automática.

Como uma alternativa para o exposto acima, alguns sistemas operacionais também usam `/etc/rc.local' ou `/etc/init.d/boot.local' para inicializar serviços adicionais durante o boot. Para iniciar o MySQL usando este método, você poderia poderia adicionar algo como o seguinte a ele:

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

Você também pode adicionar opções para mysql.server em um arquivo global `/etc/my.cnf'. Um típico arquivo `/etc/my.cnf' pode parecer com isto:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

O script mysql.server entende as seguintes opções: datadir, basedir e pid-file.

A seguinte tabela mostra quais grupos de opções cada script de inicialização lê dos arquivos de opções:

Script Grupos de opções
mysqld [mysqld], [server] e [mysqld-major-version]
mysql.server [mysql.server], [mysqld], e [server]
mysqld_safe [mysql.server], [mysqld], e [server]

Para compatibilidade com versões anteriores, o mysql.server também lê o grupo [mysql_server] e mysqld_safe também lê o grupo [safe_mysqld]. No entanto, você deve atualizar os seus arquivos de opções para usar os grupos [mysql.server] e [mysqld_safe].

See section 4.1.2 Arquivo de Opções `my.cnf'.

2.5 Atualizando/Desatualizando o MySQL

Antes de fazer uma atualização, você deve fazer o backup de seus bancos de dados antigos.

Você sempre pode mover os arquivos de formato e de dados do MySQL entre diferentes versões na mesma arquitetura enquanto você tiver versão base do MySQL. A versão base atual é 4. Se você alterar o conjunto de caracteres quando executar o MySQL, você deve executar myisamchk -r -q --set-character--set=charset em todas tabelas. De outra forma seus índices podem não ser corretamente ordenados, porque alterar o conjunto de caracteres também pode alterar a ordenação.

Se você tem receio de novas versões, você sempre pode renomear seu antigo mysqld para algo como mysqld-'número-da-versão-antiga'. Se o seu novo mysqld comportar de maneira inesperada, você simplesmente pode desliga-lo e reiniciar com seu antigo mysqld!

Se depois de uma atualização, você tiver problemas com programas clientes recompilados como Commands out of sync ou ``core dumps'' inexperados, você provavelmente usou um arquivo de cabeçalho ou de biblioteca antigo na compilação de seus programas. Neste caso você deve conferir a data de seu arquivo `mysql.h' e da biblioteca `libmysqlclient.a' para verificar que eles são da nova distribuição MySQL. Se não, por favor, recompile seus programas!

Se você tiver problemas, como na inicialização do novo servidor mysqld ou caso você não consiga conectar sem uma senha, confira se o seu arquvo `my.cnf' é o mesmo da antiga instalação! Você pode conferir com isto: nome-programa --print-defaults. Se isto não produzir outra saída além do nome do programa, você tem um arquivo my.cnf ativo que está afetando a operacionalidade do servidor!

É uma boa idéia reconstruir e reinstalar o módulo Perl DBD-mysql sempre que instalar uma nova versão do MySQL. O mesmo se aplica para outras interfaces MySQL, como Python MySQLdb.

2.5.1 Atualizando da Versão 4.0 para 4.1

Varias comportamentos visíveis foram alteradas entre o MySQL 4.0 e o MySQL 4.1 para corrigir erros críticos e tornar o MySQL mais compatível com o padrão ANSI SQL. Estas alterações podem afetar à sua aplicação.

Alguns dos comportamentos do MySQL 4.1 no 4.0 podem ser testados antes de realizar uma atualização completa para a versão 4.1, adicionamos às últimas distribuições do MySQL 4.0 (a paritr da 4.0.12) a opção de inicialização --new para o mysqld.

Esta opção lhe dá o comportamento da versão 4.1 para as alterações mais críticas. Você também pode habilitar estes comportamentos para a conexão de uma determinado cliente com o comando SET @@new=1, ou desabilitá-lo se ele for iniciado com SET @@new=0.

Se você acredita que algumas das alterações da versão 4.1 o afetarão, recomendamos que antes de atualizar para a versão 4.1, você faça o download da última distribuição do MySQL 4.0 e o execute com a opção --new adicionando o seguinte ao seu arquivo de configuração:

[mysqld-4.0]
new

Deste modo você pode testar o novo comportamento com seus aplicativos na versão 4.0 para certificar-se que eles funcionam. Isto o ajudará a ter uma transição suave quando realizar uma atualização completa do MySQL 4.1. Fazendo isto do modo acima irá assegurar que você não execute acidentalemte a versão 4.1 com a opção --new mais tarde.

A seguinte lista descreve alterações que podem afetar aplicações e que você deve observar ao atualizar para a versão 4.1:

Em geral, atualizar para o MySQL 4.1 a partir de uma versão mais nova do MySQL envolve os serguintes passos:

O mecanismo de hashing da senha foi alterado na versão 4.1 para fornecer maior segurança, mas ele pode causar problemas de compatibilidade se você ainda tiver clientes que usam a biblioteca cliente 4.0 ou anterior. (É bastante indesejável que você tenha clientes 4.0 em situações onde o cliente conecta de uma máquina remota que ainda não tenha sido atualizada para a versão 4.1). A seguinte lista indica algumas estratégias possíveis de atualização. Elas representam o que se deve fazer para escolher se ter compatibilidade com clientes antigos e ter maior segurança.

Informações adicionais sobre hashing de senha em relação a autenticação no cliente e operações de alteração de senha podem ser encontrados em section 4.3.11 Hashing de Senhas no MySQL 4.1.

2.5.2 Atualizando da Versão 3.23 para 4.0

Em geral, o que você deve fazer é atualizar para a versão 4.0 um versão mais nova do MySQL:

O MySQL 4.0 funcionará mesmo se você não fizer o acima, mas você não poderá usar os novos privilégios de segurança pois o MySQL 4.0 e você podem encontrar problemas ao atualizar o MySQL para a versão 4.1 ou mais nova. O formato do arquivo ISAM ainda funciona no MySQL 4.0 mas está obsoleto e será disabilitado (não compilado por padrão) no MySQL 4.1. Em vez disso deve se usar tabelas MyISAM.

Clientes antigos devem funcionar com um servidor versão 4.0 sem nenhum problema.

Mesmo se você fizer o indicado acima, você ainda pode voltar para o MySQL 3.23.52 ou mais novo se você encontrar problemas com o MySQL da série 4.0. Neste caso você deve usar o mysqldump para fazer um dump de qualquer tabela que use um índice full-text e recarregar o arquivo de dump no servidor 3.23 (pois o 4.0 usa um novo formato para índices full-text).

A seguir está uma lista mais completa com o que deve ser observado para atualizar para a versão 4.0;

Se você estiver executando o MySQL Server no Windows, veja section 2.5.8 Atualizando o MySQL no Windows. Se você estiver usando replicação, veja section 4.11.2 Visão Geral da Implementação da Replicação.

2.5.3 Atualizando da versão 3.22 para 3.23

A Versão 3.23 do MySQL suporta tabelas do novo tipo MyISAM e do antigo tipo ISAM. Você não necessita converter suas antigas tabelas para usá-las com a versão 3.23. Por padrão, todas novas tabelas serão criadas usando o tipo MyISAM (a menos que você inicie o mysqld com a opção --default-table-type=isam). Você pode converterr uma tabela ISAM para uma formato MyISAM com ALTER TABLE nome_tabela TYPE=MyISAM ou com o script Perl mysql_convert_table_format.

Os clientes versões 3.22 e 3.21 irão trabalhar sem quaisquer problemas com um servidor versão 3.23.

As seguintes listas dizem o que você deve conferir quando atualizar para a versão 3.23:

2.5.4 Atualizando da versão 3.21 para 3.22

Nada que afetaria a compatibilidade foi alterada entre a versão 3.21 e 3.22. A única dificuldade é que novas tabelas que são criadas com colunas do tipo DATE usarão a nova forma de armazenar a data. Você não pode acessar esses novos campos com uma versão antiga de mysqld.

Depois de instalar o MySQL versão 3.22, você deve iniciar o novo servidor e depois executar o script mysql_fix_privilege_tables. Isto adicionará os novos privilégios que você precisará para usar o comando GRANT. Se você se esquecer disto, sera retornado o erro Access denied quando você tentar usar ALTER TABLE, CREATE INDEX ou DROP INDEX. O procedimento para atualizar a tabela de permissões está descrito em section 2.5.6 Atualizando a Tabela de Permissões.

A interface API C para mysql_real_connect() foi alterada. Se você tem um programa cliente antigo que chama essa função, você deve colocar um 0 para o novo argumento db (ou recodificar o cliente para enviar o elemento db para conexões mais rápidas). Você também deve chamar mysql_init() antes de chamar mysql_real_connect()! Esta alteração foi feita para permitir à nova função mysql_options() salvar opções na estrutura do manipulador do MYSQL.

A variável key_buffer do mysqld foi renomeada para key_buffer_size, mas você ainda pode usar o antigo nome nos seus arquivos de inicialização.

2.5.5 Atualizando da versão 3.20 para 3.21

Se você estiver executando uma versão mais antiga que a Versão 3.20.28 e deseja mudar para a versão 3.21 você deve fazer o seguinte:

Inicie o servidor mysqld versão 3.21 com a opção --old-protocol para usá-lo com clientes de uma distribuição da versão 3.20 Neste caso, a nova função cliente mysql_errno() não irá retornar erro do servidor, somente CR_UNKNOWN_ERROR (mas isto funciona para erros de clientes) e o servidor usa a forma função password() anterior a 3.21 para verificação, ao invés do novo método.

Se você NÃO estiver usando a opção --old-protocol para mysqld, você precisará fazer as seguir alterações:

A versão do MySQL 3.20.28 e superiores podem manipular o novo formato da tabela de usuários sem afetar os clientes. Se você tem uma versão do MySQL mais nova que 3.20.28, senhas não irão mais funcionar se você converter a tabela de usuaios. Por segurança, você primeiro deve fazer uma atualização para a versão 3.20.28, pelo menos, e então atualizar para a versão 3.21.

O novo código cliente trabalha com um servidor mysqld 3.20.x, portanto se houver problemas com 3.21.x você deve usar o antigo servidor 3.20.x sem a necessidade de recompilar os clientes novamente.

Se você não está usando a opção --old-protocol para o mysqld, antigos clientes não poderão se conectar e exibirão a seguinte mensagem de erro:

ERROR: Protocol mismatch. Server Version = 10 Client Version = 9

A nova interface PERL DBI/DBD também suporta a antiga interface mysqlperl. A única alteração que deve ser feita se você usa o mysqlperl é alterar os argumentos para a função connect(). Os novos argumentos são: host, database, user, password (note que os argumentos user e password foram alterados de lugar). See section 12.5.2 A interface DBI.

As seguintes alterações podem afetar consultas em antigas aplicações:

2.5.6 Atualizando a Tabela de Permissões

Algumas distribuições introduzem alterações a estrutura da tabelas de permissões (a tabela no banco de dados mysql) para adicionar novos privilégios ou recursos. Para ter certeza de que as suas tabelas de permissões estão corretas quando você atualizar para uma nova versão do MySQL, você deve atualizar a sua tabela de permissão também.

Em sistemas Unix ou semelhantes, atualize a tabela de permissões executando o script mysql_fix_privilege_tables:

shell> mysql_fix_privilege_tables

Você deve executar este script enquanto o servidor está em execução. Ele tenta se conectar ao servidor na máquina local como root. Se sua conta root exige uma senha, indique a senha na linha de comando. Para o MySQL 4.1 e acima, especifique a senha assim:

shell> mysql_fix_privilege_tables --password=senha_root

Antes do MySQL 4.1, especifique a senha desta forma:

shell> mysql_fix_privilege_tables senha_root

O script realiza mysql_fix_privilege_tables qualquer ação necessária para converter sua tabela de permissões para o formato atual. Você pode ver alguns avisos Duplicate column name, durante a execução, eles podem ser ignorados.

Depois de executar o script, pare o servidor e o reinicie.

No Windows, não existe uma modo fácil de se atualizar a tabela de permissões até o MySQL 4.0.15. A partir desta versão, as distribuições do MySQL incluem um script SQL mysql_fix_privilege_tables.sql que você pode executar usando o cliente mysql. Se sua instalação do MySQL está localizada em `C:\mysql', o comando se parecerá com este:

C:\mysql\bin> mysql -u root -p mysql

mysql> SOURCE C:\mysql\scripts\mysql_fix_privilege_tables.sql

Se sua instalação está localizada em algum outro diretório, ajuste o caminha apropriadamente.

O comando irá lhe pedir a senha do root; digite-a quando pedido.

Como no procedimento com o Unix, você pode ver alguns avisos Duplicate column name enquanto o mysql processa as instruções no script mysql_fix_privilege_tables.sql; eles podem ser ignorados.

Depois de executar o script, para o servidor e reinicie-o.

2.5.7 Atualizando para outra arquitetura

Se você estiver usando o MySQL Versão 3.23, você pode copiar os arquivos .frm, .MYI e .MYD para tabelas MyISAM entre diferentes arquiteturas que suportem o mesmo formato de ponto flutuante. (O MySQL cuida de cada detalhe de troca de bytes.) See section 7.1 Tabelas MyISAM.

Os arquivos ISAM de dados e índices (`*.ISD' e `*.ISM' respectivamente) são dependentes da arquitetura e em alguns casos dependentees do Sistema Operacional. Se você deseja mover suas aplicações para outra máquina que tem uma arquitetura ou SO diferentes da sua máquina atual, você não deve tentar mover um banco de dados simplesmente copiando os arquivos para a outra máquina. Use o mysqldump.

Por padrão, o mysqldump irá criar um arquivo contendo declarações SQL. Você pode então transferir o arquivo para a outra máquina e alimentá-la como uma entrada para o cliente mysql.

Utilize mysqldump --help para ver quais opções estão disponíveis. Se você está movendo os dados para uma versão mais nova do MySQL, você deve usar mysqldump --opt com a nova versão para obter uma descarga rápida e compacta.

A mais fácil (mas não a mais rápida) forma para mover um banco de dados entre duas máquinas é executar os seguintes comandos na máquina em que o banco de dados se encontra:

shell> mysqladmin -h 'nome da outra maquina' create nome_bd
shell> mysqldump --opt nome_bd \
        | mysql -h 'nome da outra maquina' nome_bd

Se você deseja copiar um banco de dados de um máquina remota sobre uma rede lenta, pode ser usado:

shell> mysqladmin create nome_bd
shell> mysqldump -h 'nome de outra maquina' --opt --compress nome_bd \
        | mysql nome_bd

O resultado pode também ser armazenado em um arquivo, depois transfira o arquivo para a máquina destino e carregue o arquivo no banco de dados. Por exemplo você pode descarregar um banco de dados para um arquivo na máquina origem desta forma:

shell> mysqldump --quick nome_bd | gzip > nome_bd.contents.gz

(O arquivo criado neste exemplo está compactado.) Transfria o arquivo contendo o conteúdo do banco de dados para a máquina destino e execute estes comandos:

shell> mysqladmin create nome_bd
shell> gunzip < nome_bd.contents.gz | mysql nome_bd

Também pode ser usado mysqldump e mysqlimport para ajudar na transferência do banco de dados. Para grandes tabelas, isto é muito mais rápido do que usar simplesmente mysqldump. Nos comandos abaixo, DUMPDIR representa o caminho completo do diretório que você utiliza para armazenar a saída de mysqldump.

Primeiro, crie o diretório para os arquivos de saída e descarregue o banco de dados:

shell> mkdir DUMPDIR
shell> mysqldump --tab=DUMPDIR nome_bd

Depois transfira os arquivo no diretório DUMPDIR para algum diretório correspondente na máquina destino e carregue os arquivos no MySQL assim:

shell> mysqladmin create nome_bd           # cria o banco de dados
shell> cat DUMPDIR/*.sql | mysql nome_bd   # cria tabelas no banco de dados
shell> mysqlimport nome_bd DUMPDIR/*.txt   # carrega dados nas tabelas

Não se esqueça de copiar o banco de dados mysql também, porque é nele que as tabelas de permissões (user, db e host) são armazenadas. Você pode ter que executar comandos como o usuário root do MySQL na nova máquina até que você tenha o banco de dados mysql no lugar.

Depois de importar o banco de dados mysql para a nova máquina, execute mysqladmin flush-privileges para que o servidor recarregue as informações das tabelas de permissões.

2.5.8 Atualizando o MySQL no Windows

Qaundo atualizar o MySQL no Windows, siga os passo abaixo:

  1. Faça o download do última distribuição MySQL do Windows.
  2. Escolha uma hora do dia com pouco uso, onde a parada para manutenção é aceitável.
  3. Alerte os usuários que ainda estão ativos para sua parada de manutenção.
  4. Pare o Servidor MySQL em execução (por exemplo, com NET STOP mysql ou com o utilitário de Serviços se você estiver exeutando MySQL como um serviço, ou com mysqladmin shutdown).
  5. Finalize o programa WinMySQLAdmin se ele estiver em execução.
  6. Execute o script de instalação do arquivo de distribuição do Windows, clicando no botão "Install" no WinZip e seguindo os passos da instalação do script.
  7. Você pode sobrescrever a sua instalação antiga do MySQL (normalmente em `C:\mysql'), ou instalá-la em um diretório diferente, como C:\mysql4. Sobrescrever a instalação antiga é o recomendado.
  8. Reinicie o serviço MySQL Server (por exemplo, com NET START mysql se você executar o MySQL como um serviço, ou chamado o mysqld diretamente).
  9. Atualize a tabela de permissões. O procedimento está descrito em section 2.5.6 Atualizando a Tabela de Permissões.

Situações de erros possíveis:

A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.

Este erro significa que seu arquivo `my.cnf' (por padrão `C:\my.cnf') contém uma opção que não pode ser reconhecido pela MySQL. Você pode verificar que este é o caso tentando reiniciar o MySQL com o arquivo `my.cnf' renomeado, por exemplo, para `my_cnf.old' para prevenirt o servidor de usá-lo. Uma vez verificado isto, você precisa identificar qual parâmetro é o culpado. Crie um novo arquivo `my.cnf' e mova as partes do arquivo antigo para ele (reiniciando o servidor depois de mover cada parte) até que você determine qual opção está fazendo a inicialização do servidor falhar.

2.6 Notas específicas para os Sistemas Operacionais

2.6.1 Notas Windows

Esta seção descreve assuntos específicos para usar MySQL no Windows.

2.6.1.1 Conectando em um MySQL Rematamente a Windows Utilizando SSH

Aqui temos notas sobre como conectar a um servidor MySQL através de uma conexão remota e segura usando o SSH (por David Carlson dcarlson@mplcomm.com:

  1. Instale um cliente SSH na sua máquina Windows. Como um usuário, o melhor opção paga que encontrei é o SecureCRT da http://www.vandyke.com/. Outra opção é o f-secure da http://www.f-secure.com/. Você também pode encontrar algumas versões livres no Google em http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows/.
  2. Inicie seu cliente SSH Windows. Configure Host_Name = IP_ou_Nome_servidormysql. Configure userid=seu_userid para logar no seu servidor. Este valor userid não pode ser o mesmo do nome do usuário se sua conta MySQL.
  3. Configure a porta de acesso. E também faça um acesso remoto (Configure local_port: 3306, remote_host: ip_ou_nomeservidormysql, remote_port: 3306 ) ou um acesso local (configure port: 3306, host: localhost, remote port: 3306).
  4. Salve tudo, senão você terá que refazer tudo da próxima vez.
  5. Logue ao seu servidor com a sessão SSH que acabou de ser criada.
  6. Na sua máquina Windows, inicie algumas aplicações ODBC (como o Access).
  7. Crie um novo arquivo no Windows e ligue ao MySQL usando o driver ODBC da mesma forma que você normalmente faz, EXCETO pelo fato de digitar localhost para a máquina servidora MySQL -- não nomeservidormysql.

Você agora deve ter uma conexão ODBC ao MySQL, criptografada com SSH.

2.6.1.2 Compilando clientes MySQL no Windows

Em seus arquivos fontes, você deve incluir `my_global.h' antes de `mysql.h':

#include <my_global.h>
#include <mysql.h>

`my_global.h' inclui qualquer outro arquivo necessário para compatibilidade de Windows (como o `windows.h') se o arquivo é compilado no Windows.

Você também pode ligar seu código coma biblioteca dinâmica `libmysq.lib', que é apenas um wrapper para carregar em `libmysql.dll' sobre demanda, ou ligar com a biblioteca estática `mysqlclient.lib'.

Perceba que como as bibliotecas clientes do MySQL são compiladas como bibliotecas threaded, você também deve compilar seu código para ser multi-threaded!

2.6.1.3 MySQL para Windows Comparado com o MySQL para Unix

O MySQL para Windows tem provado ser muito estável. Esta versão do MySQL tem os mesmos recursos que sua versão correspondente Unix com as seguintes exceções:

Win95 e threads
O Win95 perde aproximadamente 200 bytes de memória principal para cada thread criada. Cada conexão no MySQL cria uma nova thread, portanto você não deve executar o mysqld por um longo tempo no Win95 se seu servidor lida com várias conexões! WinNT e Win98 não sofrem deste bug.
Leituras simultâneas
O MySQL depende das chamadas pread() e pwrite() para estar apto a misturar INSERT e SELECT. Atualmente nós usamos mutexes para emular pread()/pwrite(). Nós iremos, a longo prazo, trocar o nível da interface de arquivos com uma interface virtual para que nós possamos usar a interface readfile()/writefile() no NT/2000/XP para obter mais velocidade. A implementação atual limita o número de arquivos abertos que o MySQL pode usar para 1024, o que significa que você não conseguirá executar tantas threads simultâneas no NT/2000/XP como no Unix.
Leitura de blocos
O MySQL usa uma leitura de blocos para cada conexão, que tem as seguintes implicações: Planejamos corrigir este problema quando nossos desenvolvedores Windows tiverem conseguido um boa solução.
DROP DATABASE
Você não pode remover um banco de dados que está em uso por alguma thread.
Matando o MySQL do gerenciador de tarefas
Você não pode matar o MySQL do gerenciador de tarefas ou com o utilitário shutdown no Win95. Você deve desligá-lo com mysqladmin shutdown.
Nomes case-insensitivo
Nomes de arquivos não são caso sensitivo no Windows, portanto, nomes de bancos de dados e tabelas do MySQL também não são caso sensitivo no Windows. A única restrição é que os nomes de bancos de dados e tabelas devem usar o mesmo caso em uma sentença fornecida. See section 6.1.3 Caso Sensitivo nos Nomes.
O caracter de diretório `\'
Componentes de nomes de caminho no Win95 são separados pelo caracter `\' o qual também é o caractere de escape no MySQL. Se você estiver usando LOAD DATA INFILE ou SELECT ... INTO OUTFILE, use nomes de arquivo no estilo Unix com caracteres `/':
mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
Uma alternativa é dobrar o caracter `/':
mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
Problems with pipes.
Pipes não funcionam com confiança na linha de comando do Windows. Se o pipe incluir o caracter ^Z / CHAR(24), o Windows achará que ele encontrou o fim de um arquivo e abortará o programa. Isto é um problma principalmente quando se tenta aplicar um log binário como a seguir:
mysqlbinlog binary-log-name | mysql --user=root
Se você obter um problema aplicando o log e suspeitar que seja devido a um caracter ^Z/CHAR(24) você pode usar a seguinte alternativa:
mysqlbinlog binary-log-file --result-file=/tmp/bin.sql
mysql --user=root --eexecute "source /tmp/bin.sql"
O último comando pode também ser usado para leitura em qualquer arquivo sql que contenha dados binários.
erro: Can't open named pipe
Se você utiliza um servidor MySQL versão 3.22 no NT com o os programas clientes MySQL mais novos, será apresentado o seguinte erro:
error 2017: can't open named pipe to host: . pipe...
Isto ocorre porque a versão do MySQL usa named pipes no NT por padrão. Você pode evitar este erro usando a opção --host=localhost para os novos clientes MySQL ou criar um arquivo de opções `c:\my.cnf' que contenha a seguinte informação:
[client]
host = localhost
A partir da versão 3.23.50, named pipes são habilitados somente se o mysqld-nt ou mysqld-nt-max for iniciado com a opção --enable-name-pipe.
Erro Access denied for user
Se você tenta executar um programa cliente MySQL para conectar a um servidor em execução na mesma máquina, nas obtem o erro Access denied for user: 'some-user@unknown' to database 'mysql' quando acessar um servidor MySQL na mesma máquina, signifca que o MySQL não pode resolver seu nome de máquina corretamente. Para corrigir isto, você deve criar um arquivo `\Windows\hosts' com a seguinte informação:
127.0.0.1       localhost
ALTER TABLE
Enquanto você está executando uma instrução ALTER TABLE, a tabela está bloqueada para ser usado por outras threads. Isto ocorre devido ao fato de que no Windows, você não pode deletar um aruivo que está em uso por outra threads. No futuro, podemos encontrar algum modo de contornarmos este problema.
DROP TABLE
DROP TABLE em uma tabela que está em uso por uma tabela MERGE não funcionará no Windows porque o manipulador do MERGE faz o mapeamento da tabela escondido da camada superior do MySQL. Como o Windows não permite que você delete arquivos que estão abertos, você primeiro deve descarregar todas as tabelas MERGE (com FLUSH TABLES) ou apagar a tabela MERGE antes de deletar a tabela. Corrigiremos isto assim que introduzirmos views.
DATA DIRECTORY e INDEX DIRECTORY
As opções DATA DIRECTORY e INDEX DIRECTORY para CREATE TABLE são ignoradas no Windows, porque ele não suporta links simbólicos.

Aqui estão alguns assuntos em aberto para qualquer um que queira melhorar o MySQL no Windows:

2.6.2 Notas Linux (Todas as versões)

As notas abaixo a respeito da glibc aplicam-se somente na situação quando o MySQL é construido por você mesmo. Se você está executando Linux em uma máquina x86, na maioria dos casos é muito melhor para você usar nosso binário. Nós ligamos nossos binários com a melhor versão alterada da glibc, podemos escolher as melhores opções do compilador, em uma tentativa de torná-la funcional para um servidor muito exigido. Para um usuário comum, mesmo para configurações com várias conexões concorrentes e/ou tabelas excedendo o limite de 2 GB, nosso binário é, na maioria das vezes, a melhor escolha. Portanto se você ler o texto abaixo, e está em dúvida sobre o que deve fazer, tente usar o nosso binário primeiro para ver se ele preenche suas necessidades, e preocupe-se com uma construção própria apenas se você descobrir que nosso binário não é bom o suficiente para você. Neste caso, iríamos apreciar se fosse feito uma observação sobre isto, para que possamos fazer uma melhor versão bináris da próxima vez.

O MySQL usa LinuxThreads no Linux. Se você usa uma versão do Linux que não tenha a glibc2, você deve instalar LinuxThreads antes de tentar compilar o MySQL. Você pode obter o LinuxThreads em http://www.mysql.com/downloads/os-linux.html.

NOTA: Temos visto alguns problemas estranhos com o Linux 2.2.14 e MySQL em sistemas SMP; Se você tem um sistema SMP, recomendamos a atualização para o Linux 2.4! Seu sistema ficará mais rápido e mais estável.

Perceba que as versões da glibc iguais ou anteriores à Versão 2.1.1 tem um bug fatal no tratamento do pthread_mutex_timedwait, que é usado quando você executar instruções INSERT DELAYED. Recomendamos não usar INSERT DELAYED antes de atualizar a glibc.

Se você planeja ter mais de 1000 conexões simultâneas, será necessário fazer algumas alterações na LinuxThreads, recompile-a e religue o MySQL ao novo `libpthread.a'. Aumente PTHREAD_THREADS_MAX em `sysdeps/unix/sysv/linux/bits/local_lim.h' para 4096 e abaixe o STACK_SIZE no `linuxthreads/internals.h' para 256KB. Os caminhos são relativos à raiz da glibc. Note que o MySQL não será estável com cerca de 600-1000 conexões se o valor de STACK_SIZE for o padrão de 2MB.

Se você tiver um problema com o MySQL, no qual ele não consiga abrir vários arquivos ou conexões, pode ser que você não tenha configurado o Linux para lidar com o número de arquivos suficiente.

No Linux 2.2 e posteriores, você pode conferir o valor para a alocação dos arquivos fazendo:

cat /proc/sys/fs/file-max
cat /proc/sys/fs/dquot-max 
cat /proc/sys/fs/super-max

Se você possui mais de 16M de memória, deve ser adicionado o seguinte no seu script de boot (ex. `/etc/rc/boot.local' no SuSE Linux):

echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max

Você também pode executar os comandos acima da linha de comando como root, mas neste caso, os antigos limites voltarão a ser usados na próxima vez que o computador for reiniciado.

De forma alternativa, você pode configurar estes parâmteros durante a inicialização usando a ferramenta sysctl, que é usada por muitas distribuições Linux (No SuSE a partir da versão 8.0). Apenas grave os seguintes valores em um arquivo chamado `/etc/sysctl.conf':

# Aumente alguns valores para o MySQL
fs.file-max = 65536
fs.dquot-max = 8192
fs.super-max = 1024

You should also add the following to `/etc/my.cnf':

[mysqld_safe]
open-files-limit=8192

Os parâmetros acima permitem o MySQL criar até 8192 conexões + arquivos.

A constante STACK_SIZE na LinuxThreads controla o espaçamento das pilhas threads no espaço de endereçamento. Ela necessita ser grande o bastante para que tenha espaço o suficiente para a pilha de cada thread, mas pequena o bastante para manter a pilha de alguma thread executando dos dados globais mysqld. Infelizmente, a implementação Linux de mmap(), como descobrimos em experiências, irá desmapear uma região já mapeada se você solicitar o mapeamento de um endereço já em uso, zerando os dados de toda a página ao invés de retoernar. um erro. Portanto a segurança do mysqld ou qualquer outra aplicação baseada em threads depende do comportamento gentil do código que cria as threads. O usuário deve tomar medidas para certirficar-se que o número de threads em funcionamento em qualquer hora seja suficientemente baixo para que as pilhas das threads permaneçam longe do monte global. Com mysqld você deve reforçar este comportamento "gentil" configurando um valor razoável para a variável max_connections.

Se você mesmo construiu o MySQL e não deseja confusões corrigindo LinuxThreads, você deve configurar max_connections para um valor máximo de 500. Ele ainda deve ser menor se você tiver uma chave grande para o buffer, grandes tabelas heap, ou outras coisas que fazem o mysqld alocar muita memória ou se você estiver executando um kernel 2.2 com o patch de 2GB. Se você estiver usando nosso binário ou RPM versão 3.23.25 ou posterior, você pode seguramente configurar max_connections para 1500, assumindo que não há uma grande chave de buffer ou tabelas heap com grande quantidade de dados. Quanto mais você reduz STACK_SIZE em LinuxThreads mais threads você pode criar seguramente. Recomendamos os valores entre 128K e 256K.

Se você usa várias conexões simultâneas, você pode sofrer com um "recurso" do kernel 2.2 que penaliza um processo por bifurcar-se ou clonar um filho na tentativa de prevenir um ataque de separação. Isto faz com que o MySQL não consiga fazer uma bom escalonamento, quando o número de clientes simultâneos cresce. Em sistemas com CPU única, temos visto isto se manifestar em uma criação muito lenta das threads, tornando a conexão ao MySQL muito lenta. Em sistemas de múltiplas CPUs, temos observado uma queda gradual na velocidade das consultas quando o número de clientes aumenta. No processo de tentar encontrar uma solução, recebemos um patch do kernel de um de nossos usuários, que alega fazer muita diferença para seu site. O patch está disponível aqui (http://www.mysql.com/Downloads/Patches/linux-fork.patch). Atualmente temos feito testes extensivos deste patch nos sistemas de desenvolvimento e produção. A performance do MySQL obtem uma melhora significativa, sem causar problemas e atualmente o recomendamos para nossos usuários que continuando trabalhando com servidores muito carregados em kernels 2.2. Este detalhe foi corrigido no kernel 2.4, portanto, se você não está satisfeito com a performance atual do seu sistema, melhor do que aplicar um patch ao seu kernel 2.2, pode ser mais fácil simplesmente atualizar para o 2.4, que lhe dará também uma melhora em seu sistemas SMP em adição à correção do bug discutido aqui.

Estamos testando o MySQL no kernel 2.4 em uma máquina com 2 processadores e descobrimos que o MySQL escalona muito melhor - virtualmente, não há nenhuma perda de desempenho no throughput das consultas até cerca de 1000 clientes, e o fator da escala do MySQL (computado com a razão do throughput máximo para o thoughput de cada cliente.) foi de 180%. Temos observado resultados similares em sistemas com 4 processadores - virtualmente não há perda de desempenho quando o número de clientes é incrementado até 1000 e o fator da escala foi de 300%. Portanto para um servidor SMP muito carregado nós definitivamente recomendamos o kernel 2.4. Nós descobrimos que é essencial executar o processo mysqld com a mais alta prioridade possível no kernel 2.4 para obter performance máxima. Isto pode ser feito adicionando o comando renice -20 $$ ao mysqld_safe. Nos nossos testes em uma máquina com 4 processadores, o aumento da prioridade nos deu 60% de aumento no throughput com 400 clientes.

Atualmente estamos tentando coletar mais informações sobre como o MySQL atua no kernel 2.4 em sistemas com 4 e 8 processadores. Se você tem acesso a um sistema deste porte e tem feito alguns benchmarks, por favor envie um email para docs@mysql.com com os resultados - iremos incluí-los neste manual.

Existe outro detalhe que afeta muito a performance do MySQL, especialmente em sistemas multi processados. A implementação de mutex em LinuxThreads na glibc-2.1 é muito ruim para programas com várias threads que travam o mutex por um tempo curto. Em um sistema SMP, ironicamente, se você liga o MySQL com LinuxThreads sem modificações, removendo processadores da máquina, a performance do MySQL é melhorada em alguns casos. Para corrigir este comportamento, disponibilizamos um patch para glibc 2.1.3, em linuxthreads-2.1-patch

Com a glibc-2.2.2, o MySQL versão 3.23.36 irá usar o mutex adaptativo, que é muito melhor,mesmo que o patch na glibc-2.1.3. Avisamos, entretando, que sobre algumas condições, o código mutex no glibc-2.2.2 overspins, que prejudica a performance do MySQL. A chance desta condição pode ser reduzida mudando a prioridade do processo mysqld para a prioridade mais alta. Nós também corrigimos o comportamento overspin com um patch, disponível em http://www.mysql.com/Downloads/Linux/linuxthreads-2.2.2.patch. Ele combina a correção do overspin, número máximo de threads e espaçamento das pilhas em um único patch. Você precisará aplicá-lo no diretório linuxthreads com patch -p0 </tmp/linuxthreads-2.2.2.patch. Esperamos que seja incluído de alguma forma nos futuros lançamentos da glibc-2.2. De qualquer forma, se você ligar com glibc-2.2.2, ainda será necessário corrigir STACK_SIZE e PTHREAD_THREADS_MAX. Temos esperanças que os padrões serão corrigidos para valores mais aceitáveis para configurações pesadasa do MySQL no futuro, então sua construção poderá ser reduzida a ./configure; make; make install.

Recomendamos que você use os patches acima para construir uma versão estática especial de libpthread.a e use-a somente para ligações estáticas com o MySQL. Sabemos que os patches são seguros para o MySQL e pode melhorar significamente sua performance, mas não podemos dizer nada sobre outras aplicações. Se você ligar outras aplicações coma a versão modificada da biblioteca ou construir uma versão alterada compartilhada e instalá-la no seu sistema, você estará fazendo por sua conta e risco e tenha atenção com outras aplicações que dependem de LinuxThreads.

Se você passar por problemas estranhos durante a instalação do MySQL ou com travamentos de alguns utilitários comuns, é muito provável que eles são relacionados a problemas de bibliotecas ou compilador. Se for este o caso, o uso de nosso binário será a solução.

Um problema conhecido com a distribuição binária é que com antigos sistemas Linux que usam libc (como o RedHat 4.x ou Slackware), você obterá alguns problemas não fatais com resolução de nomes. See section 2.6.2.1 Notas Linux para distribuições binárias.

Quando estiver usando LinuxThreads você verá um mínimo de três processos em execução. Estes são de fato, threads. Existirá uma thread para o gerenciador LinuxThreads, uma thread para lidar com conexões e uma thread para tartar de alarmes e sinais.

Perceba que o kernel Linux e a biblioteca LinuxThread pode por padrão ter apenas 1024 threads. Isto significa que você pode ter até 1021 conexões ao MySQL em um sistema sem correção. A página http://www.volano.com/linuxnotes.html contém informações sobre como contornar este limite.

Se você ver um processo mysqld daemon finalizado com ps, isto normalmente significa que você encontrou um bug no MySQL ou que tenha uma tabela corrompida. See section A.4.1 O Que Fazer Se o MySQL Continua Falhando.

Para obter um descarga do core no Linux se o mysqld finalizar com um sinal SIGSEGV, você pode iniciar o mysqld com a opção --core-file. Perceba que provavelmente você também precisará aumentar o core file size adicionando ulimit -c 1000000 para mysqld_safe ou iniciar mysqld_safe com --core-file-sizes=1000000, See section 4.8.2 mysqld-safe, o wrapper do mysqld.

Se você estiver ligando seu próprio cliente MySQL e obter o erro:

ld.so.1: ./my: fatal: libmysqlclient.so.4:
open failed: No such file or directory

Quando executá-los, o problema pode ser evitado com um dos seguintes métodos:

Se você estiver usando o compilador Fujitsu (fcc / FCC) você terá alguns problemas compilando o MySQL porque os arquivos de cabeçalho Linux são muito orientados ao gcc.

A seguinte linha configure deve funcionar com fcc/FCC:

CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE \
-DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib \
-K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const \
-Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO \
'-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql \
--enable-assembler --with-mysqld-ldflags=-all-static --disable-shared \
--with-low-memory

2.6.2.1 Notas Linux para distribuições binárias

O MySQL necessita pelo menos do Linux versão 2.0

Aviso: Percebemos que alguns usuários do MySQL tiveram serios problemas de estabilidade com o MySQL e o kernel 2.2.14 do Linux. Se você estiver usando este kernel você deve atualizá-lo para o 2.2.19 (ou posterior) ou para o kernel 2.4. Se você tiver um gabinete multi-cpu, então você deve considerar seriamente o uso do kernel 2.4 uma vez que ele lhe trará uma melhora significante na velocidade.

A versão binária é ligada com -static, que significa que você normalmente não precisa se preocupar com qual versão das bibliotecas do sistema você tem. Você não precisa instalar LinuxThreads. Um programa ligado com a opção -static é um pouco maior que um programa ligado dinamicamente e também um pouco mais rápido (3-5%). Um problema, entretanto, é que você não pode usar funções definidas pelo usuário (UDF) com um programa ligado estaticamente. Se você for escrever ou usar funções UDF (isto é algo para programadores C ou C++), você deve compilar o MySQL, usando ligações dinamicas.

Se você estiver usando um sistema baseado em libc (em vez de um sistema glibc2), você, provavelmente, terá alguns problemas com resolução de nomes de máquinas e getpwnam() com a versão binária. (Isto é porque o glibc infelizmente depende de algumas bibliotecas externas para resolver nomes de máquinas e getpwent(), mesmo quando compilado com -static). Neste caso, você provavelmente obterá a seguinte mensagem de erro quando executar mysql_install_db:

Sorry, the host 'xxxx' could not be looked up

ou o seguinte erro quando você tentar executar mysqld com a opção --user:

getpwnam: No such file or directory

Você pode resolver este problema usando de um dos modos seguintes:

As distribuições binárias Linux-Intel e RPM do MySQL são configuradas para o máximo de desempenho possível. Nós sempre tentamos usar o compilador mais rápido e estável disponível.

Suporte MySQL ao Perl exige Perl Versão 5.004_03 ou mais novo.

Em algumas versões 2.2 do kernel Linux,você pode obter o erro Resource temporarily unavailable quando você faz várias novas conexões para um servidor mysqld sobre TCP/IP.

O problema é que o Linux tem um atraso entre o momento em que você fecha um socket TCP/IP até que ele seja realmente liberado pelo sistema. Como só existe espaço para um número finito de slots TCP/IP, você irá obter o erro acima se você tentar fazer muitas novas conexões TCP/IP durante um pequeno tempo, como quando você executa o benchmark do MySQL `test-connect' sobre TCP/IP.

Nós enviamos emails sobre este problema várias vezes para diferentes listas de discussão Linux mas nunca conseguimos resolver este problema apropriadamente.

A única 'correção' conhecida , para este problema é usar conexões persistentes nos seus clientes ou usar sockets, se você estiver executando o servidor de banco de dados e clientes na mesma máquina. Nós experamos que o kernel Linux 2.4 corrija este problema no futuro.

2.6.2.2 Notas Linux x86

O MySQL exige a versão 5.4.12 ou mais nova da libc. Sabe-se que funciona com a libc 5.4.46. A versão 2.0.6 e posterior da glibc também deve funcionar. Existem alguns problemas com os RPMs glibc da RedHat, portanto se você tiver problemas, confira se existe alguma atualização! Sabemos que os RPMs glibc 2.0.7-19 e 2.0.7-29 funcionam.

Se você estiver usando o Red Hat 8.0 ou uma nova biblioteca glibc 2.2.x, você deve iniciar o mysqld com a opção --thread-stack=192K (Use -O thread_stack=192K antes do MySQL 4). Se você não fizer isto o mysqld finlizará em gethostbyaddr() porque a nova biblioteca glibc exige mais de 128K de memória na pilha para esta chamada. Este tamanho de pilha é o padrão agora no MySQL 4.0.10 e acima.

Se você está usando o gcc 3.0 e acima para compilar o MySQL, você deve instalar a biblioteca libstdc++v3 antes de compilar o MySQL; se você não fizer isto, você obterá um erro sobre um símbolo __cxa_pure_virtual perdido durante a ligação.

Em algumas distribuições Linux mais antigas, configure pode produzir um erro como este:

Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file.
See the Installation chapter in the Reference Manual.

Faça apenas o que a mensagem de erro diz e adicione um caractere sublinhado para a macro _P que tem somente um caractere sublinhado e então tente novamente.

Você pode obter alguns aviso quando estiver compilando; os mostrados abaixo podem ser ignorados:

mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to
`long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to
`long unsigned int'

O mysql.server pode ser encontrado no diretório `share/mysql' sob o diretório de instalação MySQL ou no diretório `support-files' da árvore fonte MySQL.

Se o mysqld sempre descarregar um core na inicialização, o problema pode ser que você tenha um antigo `/lib/libc.a'. Tente renomeá-lo depois remova `sql/mysqld' e faça um novo make install e tente novamente. Este problema foi relatado em algumas instalações Slackware.

Se você obter o seguinte erro quando ligar o mysqld, significa que seu `libg++.a' não está instalado corretamente:

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definition of `_IO_putc'

Você pode evitar o uso de `libg++.a' executando configure desta forma:

shell> CXX=gcc ./configure

2.6.2.3 Notas Linux SPARC

Em algumas implementações, readdir_r() está quebrada. O sintoma é que SHOW DATABASES sempre retorna um conjunto vazio. Isto pode ser corrigido removendo HAVE_READDIR_R do `config.h' depois de configurar e antes de compilar.

2.6.2.4 Notas Linux Alpha

O MySQL Versão 3.23.12 é a primeira versão do MySQL que é testada no Linux-Alpha. Se você planeja usar o MySQL no Linux-Alpha, você deve ter certeza que possui esta versão ou mais nova.

Temos testado o MySQL no Alpha com nossos pacotes de benchmarks e testes, e ele parece funcinar muito bem.

Quando nós compilamos o binários MySQL padrões, nós estávamos usando SuSE 6.4, kernel 2.2.13-SMP, Compilador C Compaq (V6.2-504) e compilador C++ Compaq (V6.3-005) em uma máquina Compaq DS20 com um processador Alpha EV6.

Você pode encontrar os compiladores acima em http://www.support.compaq.com/alpha-tools. Usando estes compiladores, em vez do gcc, obtemos 9-14 % de melhora na performance com MySQL.

Note que a linha de configuração otimiza o binário para a CPU atual; isto significa que você só pode utilizar nosso binário se você tiver um processador Alpha EV6. Nós também compilamos estaticamente para evitar problemas de bibliotecas.

A partir das próximas distribuições adicionamos o parâmetro -arch generic em nossas opções de compilação, o qual assegura que o binário execute em todos os processadores Alpha. Nós também compilamos estaticamente para evitar problemas de bibliotecas.

CC=ccc CFLAGS="-fast -arch generic" CXX=cxx \
CXXFLAGS="-fast -arch generic -noexceptions -nortti" \
./configure --prefix=/usr/local/mysql --disable-shared \
--with-extra-charsets=complex --enable-thread-safe-client \
--with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared

Se você deseja usar egcs a seguinte linha de configuração funcionou para nós:

CFLAGS="-O3 -fomit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--disable-shared

Alguns problemas conhecidos quando executamos o MySQL no Linux-Alpha:

2.6.2.5 Notas Linux PowerPC

O MySQL deve funcionar no MkLinux com o mais novo pacote glibc (testado com glibc 2.0.7).

2.6.2.6 Notas Linux MIPS

Para ter o MySQL funcionando no Qube2. (Linux Mips), você precisará das bibliotecas glibc mais novas (Sabemos que glibc-2.0.7.29C2 funciona). Você também deve usar o compilador egcs C++ (egcs-1.0.2-9, gcc 2.95.2 ou mais nova).

2.6.2.7 Notas Linux IA-64

Para conseguir compilar o MySQL no Linux Ia64, usamos a seguinte linha de compilação: Usando gcc-2.96:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
"--with-comment=Official MySQL binary" --with-extra-charsets=complex

No Ia64 os binários do cliente MySQL estão usando bibliotecas compartilhadas. Isto significa se você instalar nossa distribuição binárias em algum outro lugar diferente de `/usr/local/mysql' você precisa modificar o `/etc/ld.so.conf' ou adicionar o caminho da o diretório onde está localizado o `libmysqlclient.so' na variável de ambiente LD_LIBRARY_PATH.

See section A.3.1 Problemas de Ligação com a Biblioteca do Cliente MySQL.

2.6.3 Notas Solaris

No Solaris, você deve ter problemas mesmo antes de descompactar a distribuição MySQL! O tar do Solaris não pode tratar grandes nomes de arquivos, portanto você pode ver um erro deste tipo quando descompactar o MySQL:

x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks
tar: directory checksum error

Neste caso, você deve usar o GNU tar (gtar) para desempacotar a distribuição. Você pode encontrar uma cópia pré-compilada para Solaris em http://www.mysql.com/downloads/os-solaris.html.

As threads nativas da Sun funcionam somente no Solaris 2.5 e superior. Para a versão 2.4 e anteriores, o MySQL irá automaticamente usar MIT-pthreads. See section 2.3.6 Notas MIT-pthreads.

Se você obter o seguinte erro de configure:

checking for restartable system calls... configure: error can not run test
programs while cross compiling

Isto significa que alguma coisa está errada com a instalação de seu compilador! Neste caso você deve atualizar seu compilador para uma versão mais nova. Você também pode resolver este problema inserindo a seguinte linha no arquivo `config.cache':

ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}

Se você está usando Solaris em um SPARC, o compilador recomendado é o gcc 2.95.2. Você pode encontrá-lo em http://gcc.gnu.org/. Perceba que egcs 1.1.1 e gcc 2.8.1 não são estáveis no SPARC!

A linha do configure recomendado quando usando gcc 2.95.2 é:

CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler

Se você possui um ultra sparc, você pode obter 4% a mais de performance adicionando "-mcpu=v8 -Wa,-xarch=v8plusa" para a CFLAGS e CXXFLAGS.

Se você possui o compilador Sun Workshop (Fortre) 5.3 (ou mais novo), você pode executar configure da seguinte forma:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
CXX=CC CXXFLAGS="-noex -mt" \
./configure --prefix=/usr/local/mysql --enable-assembler

Você pode criar um binário de 64 bits usando o compilador Forte da Sun com os seguintes parâmetros de compilação:

CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
./configure --prefix=/usr/local/mysql --enable-assembler

Para criar um binário de 64 bits do Solaris usando gcc, e -m64 para CFLAGS e CXXFLAGS. Note que isto só funciona com o MySQL 4.0 e acima - o MySQL 3.23 não inclui as modificações exigidas para suportar isto.

No benchmark do MySQL, conseguimos um aumento de velocidade de 4% em um UltraSPARC usando o Forte 5.0 no modo 32 bit em comparação com o uso do gcc 3.2 com o parametro -mcpu.

Se você criar um binário de 64 bits, ele será 4$ mais lento que o binário de 32 bits, mas o mysqld poderá tratar mais threads e memória.

Se você tiver um problema com fdatasync ou sched_yield, você pode corrigir isto adicionando LIBS=-lrt para a linha de configuração

O seguinte paragráfo é relevante somente para compiladores mais antigos que o WorkShop 5.3:

Você também pode ter que editar o script configure para alterar esta linha:

#if !defined(__STDC__) || __STDC__ != 1

para isto:

#if !defined(__STDC__)

Se você ligar __STDC__ com a opção -Xc, o compilador Sun não pode compilar com o arquivo de cabeçalho `pthread.h' do Solaris. Isto é um bug da Sun (compilador corrompido ou arquivo include corrompido).

Se o mysqld emitir a mensagem de erro mostrada abaixo quando você executá-lo, você deve tentar compilar o MySQL com o compilador Sun sem habilitar a opção multi-thread (-mt):

libc internal error: _rmutex_unlock: rmutex not held

Adicione -mt a CFLAGS e CXXFLAGS e tente novamente.

Se você estiver usando a versão SFW do gcc (que vem com o Solaris 8), você deve adicionar `/opt/sfw/lib' a variável de ambiente LD_LIBRARY_PATH antes de executar a configuração.

Se você estiver usando o gcc disponível em sunfreeware.com, você pode ter muitos problemas. Você deve recompilar o gcc e GNU binutils na máquina que você o executará para evitar qualquer problema.

Se você obter o seguinte erro quando estiver compilando o MySQL com gcc, significa que seu gcc não está configurado para sua versão de Solaris:

shell> gcc -O3 -g -O2 -DDBUG_OFF  -o thr_alarm ...
./thr_alarm.c: In function `signal_hand':
./thr_alarm.c:556: too many arguments to function `sigwait'

A coisa apropriada para fazer neste caso é obter a versão mais nova do gcc e compilá-lo com seu compilador gcc atual! Ao menos para o Solaris 2.5, a maioria das versões binárias de gcc tem arquivos inúteis e antigos que irão quebrar todos programas que usam threads (e possivelmente outros programas)!

O Solaris não fornece versões estáticas de todas bibliotecas de sistema (libpthreads) e libdl), portanto você não pode compilar o MySQL com --static. Se você tentar fazer isto, receberá o erro:

ld: fatal: library -ldl: not found

ou

undefined reference to `dlopen'

ou

cannot find -lrt

Se vários processos tentar conectar muito rapidamente ao mysqld, você verá este erro no log do MySQL:

Error in accept: Protocol error

Você deve tentar iniciar o servidor com a opção --set-variable back_log=50 como uma solução para esta situação. Note que --set-variable=nome=valor e -O nome=valor está obsoleto desde o MySQL 4.0. Use apenas --back_log=50. See section 4.1.1 Opções de Linha de Comando do mysqld.

Se você está ligando seu próprio cliente MySQL, você deve obter o seguinte erro quando tentar executá-lo:

ld.so.1: ./my: fatal: libmysqlclient.so.#:
open failed: No such file or directory

O problema pode ser evitado por um dos seguintes métodos:

Se você tiver problemas com o configure tentando ligar com -lz e você não tem a zlib instalada, você terá duas opções:

Se você estiver usando o gcc e tiver problemas carregando funções UDF no MySQL, tente adicionar -lgcc para a linha de ligação para a função UDF.

Se você deseja que o MySQL inicie automaticamente, você pode copiar `support-files/mysql.server' para `/etc/init.d' e criar um link simbólico para ele, chamado `/etc/rc.3.d/S99mysql.server'.

Como o Solaris não suporta core files para aplicações setuid(), você não pode obter um core file do mysqld se você estiver usando a opção --user.

2.6.3.1 Notas Solaris 2.7/2.8

Você pode utilizar normalmente um binário Solaris 2.6 no Solaris 2.7 e 2.8. A maioria dos detalhes do Solaris 2.6 também se aplicam ao Solaris 2.7 e 2.8.

Note que o MySQL versão 3.23.4 e superiores devem estar aptos para autodetectar novas versões do Solaris e habilitar soluções para os problemas seguintes!

Solaris 2.7 / 2.8 tem alguns bugs nos arquivos include. Você pode ver o seguinte erro quando você usa o gcc:

/usr/include/widec.h:42: warning: `getwc' redefined
/usr/include/wchar.h:326: warning: this is the location of the previous
definition

Se isto ocorrer, você pode fazer o seguinte para corrigir o problema:

Copie /usr/include/widec.h para .../lib/gcc-lib/os/gcc-version/include e mude a linha 41 :

#if     !defined(lint) && !defined(__lint)

para

#if     !defined(lint) && !defined(__lint) && !defined(getwc)

Uma alternativa é editar o `/usr/include/widec.h' diretamente. Desta forma, depois de fazer a correção, você deve remover o `config.cache' e executar o configure novamente !

Se você obter erros como estes quando você executar o make, é porque o configure não encontrou o arquivo `curses.h' (provavelmente devido ao erro no arquivo `/usr/include/widec.h'):

In file included from mysql.cc:50:
/usr/include/term.h:1060: syntax error before `,'
/usr/include/term.h:1081: syntax error before `;'

A solução para isto é fazer uma das seguintes opções:

Se o seu ligador tiver problemas para encontrar o -lz quando ligar ao seu programa cliente, provavelmente o problema é que seu arquivo `libz.so' está instalado em `/usr/local/lib'. Você pode corrigir isto usando um dos seguintes métodos:

2.6.3.2 Notas Solaris x86

No Solaris 8 no x86, mysqld irá descarregar um core se você executar um 'strip' no mesmo.

Se você estiver usando gcc ou egcs no Solaris X86 e você tiver problemas com descarregos de core, você deve utilizar o seguinte comando configure:

CC=gcc CFLAGS="-O3 -fomit-frame-pointer -DHAVE_CURSES_H" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \
./configure --prefix=/usr/local/mysql

Isto irá evitar problemas com a biblioteca libstdc++ e com exceções C++.

Se isto não ajudar, você pode compilar uma versão com debug e executá-lo com um arquivo de ratreamento (trace) ou sob gdb. See section E.1.3 Depurando o mysqld no gdb.

2.6.4 Notas BSD

Esta seção fornece informação para os vários tipos de BSD, assim como a versão específica para eles.

2.6.4.1 Notas FreeBSD

FreeBSD 4.x ou mais novo é recomendado para executação do MySQL uma vez que o pacote thread é muito mais integrado.

A mais fácil e portanto a forma preferida para instalá-lo é usar as portas mysql-server e mysql-client disponíveis em http://www.freebsd.org.

Usando-as você obtem:

É recomendado que você utilize MIT-pthreads no FreeBSD 2.x e threads nativas nas Versões 3 e superiores. É possível executar com threads nativas em algumas versões antigas (2.2.x) mas você pode encontrar problemas ao finalizar o mysqld.

Infelizmente algumas chamadas de funções no FreeBSD ainda não são totalmente seguras com threads, principalmente a função gethostbyname(), que é usada pelo MySQL para converter nomes de máquinas em endereços IPs. Sob certas circunstâncias, o processo mysqld irá criar repentinamente um carga de CPU de 100% e ficará sem resposta. Se você se deparar com isto, tente iniciar o MySQL usando a opção --skip-name-resolve.

Alternativamente, você pode ligar o MySQL no FreeBSD 4.x com a biblioteca LinuxThreads, que evita uns poucos problemas que a implementação da thread nativa do FreeBSD tem. Para uma comparação muito boa do LinuxThreads vs. threads nativas dê uma olhada no artigo "FreeBSD or Linux for your MySQL Server?" de Jeremy Zawodny em http://jeremy.zawodny.com/blog/archives/000697.html

Os problemas conhecidos usando LinuxThreads na FreeBSD são:

O `Makefile' do MySQL necessita o GNU make (gmake) para funcionar. Se você deseja compilar o MySQL, antes você precisará instalar o GNU make.

Tenha certeza que sua configuração de resolução de nomes esteja correta. De outra forma você vai ter atrasos na resolução ou falhas quando conectar ao mysqld.

Tenha certeza que a entrada localhost no arquivo `/etc/hosts' esteja correta (de outra forma você irá ter problemas conectando ao banco de dados). O arquivo `/etc/hosts' deve iniciar com a linha:

127.0.0.1       localhost localhost.seu.dominio

O modo recomendado de compilar e instalar o MySQL no FreeBSD com gcc (2.95.2 e acima) é:

CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions -felide-constructors \
-fno-strength-reduce" \
./configure --prefix=/usr/local/mysql --enable-assembler
gmake
gmake install
./scripts/mysql_install_db
cd /usr/local/mysql
./bin/mysqld_safe &

Se você percber que o configure usará MIT-pthreads, você de ler as notas sobre MIT-pthreads. See section 2.3.6 Notas MIT-pthreads.

Se o make install não puder encontrar `/usr/include/pthreads', é porque o configure não detectou que você precisava de MIT-pthreads. Isto é corrigido executando estes comandos:

shell> rm config.cache
shell> ./configure --with-mit-threads

O FreeBSD é também conhecido por ter um limite muito baixo para o manipulador de arquivos. See section A.2.17 Arquivo Não Encontrado. Descomente a seção ulimit -n no mysqld_safe ou aumente os limites para o usuário mysqld no /etc/login.conf (e reconstrua-o com cap_mkdb /etc/login.conf). Também tenha certeza que você configurou a classe apropriada para este usuário no arquivo de senhas (password) se você não estiver usando o padrão (use: chpass nome_usuario_mysqld). See section 4.8.2 mysqld-safe, o wrapper do mysqld.

Se você tiver muita memória você deve considerar em reconstruir o Kernel para permitir o MySQL de usar mais de 512M de RAM. Dê uma olhada na opção MAXDSIZ na arquivo de configuração LINT para maiores informações.

Se você tiver problemas com a data atual no MySQL, configurar a variável TZ provavelmente ajudará. See section F Variáveis de Ambientes do MySQL.

Para obter um sistema seguro e estável você deve usar somente kernels FreeBSD que estejam marcados com -STABLE.

2.6.4.2 Notas NetBSD

Para compilar no NetBSD você precisa do GNU make. De outra forma o compilador quebraria quando o make tentasse executar lint em arquivos C++.

2.6.4.3 Notas OpenBSD

No OpenBSD Versão 2.5, você pode compilar o MySQL com threads nativas com as seguintes opções:

CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no

2.6.4.4 Notas OpenBSD 2.8

Nossos usuários relataram que o OpenBSD 2.8 tem um bug nas threads que causa problemas com o MySQL. Os desenvolvedores do OpenBSD já corrigiram o problema, mas em 25 de Janeiro de 2001 a correção foi disponível apenas no ramo ``-current''. Os sintomas deste bug nas threads são: resposta lenta, alta carga, alto uso de CPU e quedas do servidor.

Se você obter um erro como Error in accept:: Bad file descriptor ou erro 9 ao tentar abrir tabelas ou diretórios, o problema é provavelmente que você não alocou memória suficiente para os descritores de arquivo do MySQL.

Neste caso tente iniciar o mysqld_safe como root com as seguintes opções:

shell> mysqld_safe --user=mysql --open-files-limit=2048 &

2.6.4.5 Notas BSDI Versão 2.x

Se você obter o seguinte erro quando estiver compilando o MySQL, seu valor ulimit para memória virtual é muito baixo:

item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)':
item_func.h:28: virtual memory exhausted
make[2]: *** [item_func.o] Error 1

Tente usar ulimit -v 80000 e executar o make novamente. Se isto não funcionar e você estiver usando o bash, tente trocar para csh ou sh; alguns usuários BSDI relataram problemas com bash e ulimit.

Se você utiliza gcc, você pode também ter de usar a opção --with-low-memory para o configure estar apto a compilar o `sql_yacc.cc'.

Se você tiver problemas com a data atual no MySQL, configurar a variável TZ provavelmente ajudará. See section F Variáveis de Ambientes do MySQL.

2.6.4.6 Notas BSD/OS Versão 3.x

Atualize para BSD/OS Versão 3.1. Se isto não for possível, instale BSDIpatch M300-038.

Use o seguinte comando quando configurar o MySQL:

shell> env CXX=shlicc++ CC=shlicc2 \
       ./configure \
           --prefix=/usr/local/mysql \
           --localstatedir=/var/mysql \
           --without-perl \
           --with-unix-socket-path=/var/mysql/mysql.sock

O comeando seguinte também funciona:

shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 \
       ./configure \
           --prefix=/usr/local/mysql \
           --with-unix-socket-path=/var/mysql/mysql.sock

Você pode alterar as localizações dos diretórios se você desejar, ou apenas usar os padrões não especificando nenhuma localização.

Se você tiver problemas com performance sob alta carga, tente usar a opção --skip-thread-priority para mysqld! Isto irá executar todas as threads com a mesma prioridade; no BSDI versão 3.1, isto fornece melhor performance (pelo menos até o BSDI corrigir seu organizador de threads).

Se você obter o erro virtual memory exhausted enquanto estiver compilando, deve tentar usar ulimit -v 80000 e executar make novamente. Se isto não funcionar e você estiver usando bash, tente trocar para csh ou sh; alguns usuários BSDI relataram problemas com bash e ulimit.

2.6.4.7 Notas BSD/OS Versão 4.x

O BSDI Versão 4.x tem alguns bugs relacionados às threads. Se você deseja usar o MySQL nesta versão, você deve instalar todas as correções relacionadas às threads. Pelo menos a M400-23 deve estar instalada.

Em alguns sistemas BSDI versão 4.x, você pode ter problemas com bibliotecas compartilhadas. O sintoma é que você não pode executar nenhum programa cliente, por exemplo, mysqladmin. Neste caso você precisa reconfigurar o MySQL, para ele não usar bibliotecas compartilhadas, com a opção --disable-shared.

Alguns clientes tiveram problemas no BSDI 4.0.1 que o binário do mysqld não conseguia abrir tabelas depois de um tempo em funcionamento. Isto é porque alguns bugs relacionados a biblioteca/sistema fazem com que o mysqld altere o diretório atual sem nenhuma informação!

A correção é atualizar para a 3.23.34 ou depois de executar configure remova a linha $define HAVE_REALPATH de config.h antes de executar o make.

Perceba que com isso você não pode fazer um link simbólico de um diretório de banco de dados para outro diretório ou fazer um link simbólico a uma tabela para outro banco de dados no BSDI! (Criar um link simbólico para outro disco funciona).

2.6.5 Notas Mac OS X

2.6.5.1 Mac OS X 10.x

O MySQL deve funcionar sem problemas no Mac OS X 10.x (Darwin). Você não precisa dos patches pthread para este SO.

Isto também se aplica ao Mac OS X 10.x Server. A compilação para a plataforma Server é a mesma para a versão cliente do Mac OS X. No entanto note que o MySQL vem preinstalado no Servidor !

Nosso binário para Mac OS X é compilado no Darwin 6.3 com a seguinte linha de configuração:

CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \
CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \
-fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile --disable-shared

See section 2.1.3 Instalando o MySQL no Mac OS X.

2.6.5.2 Mac OS X Server 1.2 (Rhapsody)

Antes de tentar configurar o MySQL no MAC OS X server 1.2 (aka Rhapsody), primeiro você deve instalar o pacote pthread encontrado em: http://www.prnet.de/RegEx/mysql.html.

See section 2.1.3 Instalando o MySQL no Mac OS X.

2.6.6 Notas de Outros Unix

2.6.6.1 Notas HP-UX para distribuições binárias

Alguma das distribuições binárias do MySQL para HP-UX é distribuida como um arquivo depot da HP e como um arquivo tar. Para usar o arquivo depot você deve estar executando pelo menos o HP-UX 10.x para ter acesso às ferramentas de arquivos depot da HP.

A versão HP do MySQL foi compilada em um servidor HP 9000/8xx sob HP-UX 10.20, usando MIT-pthreads. Sob esta configuração o MySQL funciona bem. O MySQL Versão 3.22.26 e mais novas também podem ser construidas com o pacote thread nativo da HP.

Outras configurações que podem funcionar:

As seguintes configurações definitivamente não funcionarão:

Para instalar a distribuição, utilze um dos comandos abaixo, onde /path/to/depot é o caminho completo do arquivo depot:

O depot copia os binários e bibliotecas em `/opt/mysql' e dados em `/var/opt/mysql'. O depot também cria as entradas apropriadas em `/etc/init.d' e `/etc/rc2.d' para iniciar o servidor automaticamente na hora do boot. Obviamente, para instalar o usuário deve ser o root.

Para instalar a distribuição HP-UX tar.gz, você deve ter uma cópia do GNU tar.

2.6.6.2 Notas HP-UX Versão 10.20

Existem alguns pequenos problemas quando compilamos o MySQL no HP-UX. Nós recomendamos que você use o gcc no lugar do compilador nativo do HP-UX, porque o gcc produz um código melhor!

Nós recomendamos o uso do gcc 2.95 no HP-UX. Não utilize opções de alta otimização (como -O6) ja que isto pode não ser seguro no HP-UX.

A seguine linha do configure deve funcionar com o gcc 2.95:

CFLAGS="-I/opt/dce/include -fpic" \
CXXFLAGS="-I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti" CXX=gcc ./configure --with-pthread \
--with-named-thread-libs='-ldce' --prefix=/usr/local/mysql --disable-shared

A seguinte linha do configure deve funcionar com o gcc 3.1:

CFLAGS="-DHPUX -I/opt/dce/include -O3 -fPIC" CXX=gcc \
CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions \
-fno-rtti -O3 -fPIC" ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=complex --enable-thread-safe-client \
--enable-local-infile  --with-pthread \
--with-named-thread-libs=-ldce --with-lib-ccflags=-fPIC
--disable-shared

2.6.6.3 Notas HP-UX Versão 11.x

Para HP-UX Versão 11.x nós recomendamos o MySQL Versão 3.23.15 ou posterior.

Por causa de alguns bugs críticos nas bibliotecas padrão do HP-UX, você deve instalar as seguintes correções antes de tentar executar o MySQL no HP-UX 11.0:

PHKL_22840 Streams cumulative
PHNE_22397 ARPA cumulative

Isto irá resolver um problema que tem como retorno EWOLDBLOCK de recv() e EBADF de accept() em aplicações threads.

Se você estiver usando gcc 2.95.1 em um sistema HP-UX 11.x sem correções, você obterá o erro:

In file included from /usr/include/unistd.h:11,
                 from ../include/global.h:125,
                 from mysql_priv.h:15,
                 from item.cc:19:
/usr/include/sys/unistd.h:184: declaration of C function ...
/usr/include/sys/pthread.h:440: previous declaration ...
In file included from item.h:306,
                 from mysql_priv.h:158,
                 from item.cc:19:

O problema é que o HP-UX não define consistentemente a pthreads_atfork(). Ela tem protótipos coflitantes em `/usr/include/sys/unistd.h':184 e `/usr/include/sys/pthread.h':440 (detalhes abaixo).

Uma solução é copiar `/usr/include/sys/unistd.h' em `mysql/include' e editar `unistd.h' alterando-o para coincidir com a definição em `pthread.h'. Aqui está o diff:

183,184c183,184
<      extern int pthread_atfork(void (*prepare)(), void (*parent)(),
<                                                void (*child)());
---
>      extern int pthread_atfork(void (*prepare)(void), void (*parent)(void),
>                                                void (*child)(void));

Depois disto, a seguinte linha configure deve funcionar:

CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
./configure --prefix=/usr/local/mysql --disable-shared

Segue algumas inforamações que um usuário do HP-UX Versão 11.x nos enviou sobre compilação do MySQL com o compilador HP-UX:

CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --with-extra-character-set=complex

Você pode ignorar qualquer erro do tipo:

aCC: warning 901: unknown option: `-3': use +help for online documentation

Se você obter o seguinte erro do configure

checking for cc option to accept ANSI C... no
configure: error: MySQL requires a ANSI C compiler (and a C++ compiler).
Try gcc. See the Installation chapter in the Reference Manual.

Confira se você não tem o caminho para o compilador K&R antes do caminho para o compilador C e C++ do HP-UX.

Outra razão para não estar compilando é você não definir o parâmetro +DD64 acima.

Outra possibilidade para o HP-UX 11 é usar o binário MySQL para HP-UX 10.20. Recebemos relatos de alguns usuários de que esses binários funcionam bem no HP-UX 11.00. Se você encontrar problemas, verifique o nível do pacth de seu HP-UX.

2.6.6.4 Notas IBM-AIX

Detecção automática de xlC está faltando no Autoconf, portando um comando configure deste tipo é necessário quando estiver compilando o MySQL (Este exemplo usa o compilador IBM):

export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
export CFLAGS="-I /usr/local/include"
export LDFLAGS="-L /usr/local/lib"
export CPPFLAGS=$CFLAGS
export CXXFLAGS=$CFLAGS

./configure --prefix=/usr/local \
		--localstatedir=/var/mysql \
		--sysconfdir=/etc/mysql \
		--sbindir='/usr/local/bin' \
		--libexecdir='/usr/local/bin' \
		--enable-thread-safe-client \
		--enable-large-files

Acima estão as opções usadas para compilar a distribuição MySQL que pode ser encontrada em http://www-frec.bull.com/.

Se você alterar o -O3 para -O2 na linha de configuração acima, você também deve remover a opção -qstrict (isto é uma limitação no compilador C da IBM).

Se você estiver usando gcc ou egcs para compilar o MySQL, você DEVE usar a opção -fno-exceptions, já que o manipulador de exceções no gcc/egcs não é seguro para threads! (Isto foi testado com egcs 1.1). Existem também alguns problemas conhecidos com o assembler da IBM que pode gerar código errado quando usado com gcc.

Nós recomendamos a seguinte linha do configure com egcs e gcc 2.95 no AIX:

CC="gcc -pipe -mcpu=power -Wa,-many" \
CXX="gcc -pipe -mcpu=power -Wa,-many" \
CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory

O -Wa,-many é necessário para o compilador ser bem sucedido. IBM está ciente deste problema mas não está com pressa de corrigí-lo devido ao fato do problema poder ser contornado. Nós não sabemos se o -fno-exceptions é necessário com gcc 2.9.5, mas como o MySQL não utiliza exceções e a opção acima gera código mais rápido, recomendamos que você sempre use esta opção com o egcs/gcc.

Se você tiver algum problema com código assembler tente alterar o -mcpu=xxx para o seu processador. Normalmente power2, power ou powerpc podem ser usados, de uma maneira alternativa você pode precisar usar 604 ou 604e. Não tenho certeza mas acredito que usar "power" deve satisfazer a maioria dos casos, mesmo em uma máquina power2.

Se você não sabe qual é o seu processador, utilize o comando "uname -m", isto irá fornecer a você uma string que parece com "000514676700", com um formato de xxyyyyyymmss onde xx e ss são sempre 0s, yyyyyy é o ID único do sistema e mm é o ID da CPU Planar. Uma tabela destes valores podem ser encontrados em http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds5/uname.htm. Isto irá lhe fornecer um tipo de máquina e um modelo de máquina que você pode usar para determinar que tipo de cpu você tem.

Se você tiver problemas com sinais (MySQL finaliza sem notificação sob alta carga) você pode ter encontrado um bug de SO com threads e sinais. Neste caso você pode dizer ao MySQL para não usar sinais configurando-o com:

shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
       CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
       -DDONT_USE_THR_ALARM" \
       ./configure --prefix=/usr/local/mysql --with-debug --with-low-memory

Isto não afeta a performance do MySQL, mas tem o efeito colateral que você não pode matar clientes que estão ``dormindo'' em uma conexão com mysqladmin kill ou mysqladmin shutdown. Neste caso, o cliente morrerá quando ele chegar no próximo comando.

Em algumas versões do AIX, ligando com libbind.a faz o getservbyname descarregar core. Isto é erro no AIX e deve ser relatado para a IBM.

Para o AIX 4.2.1 e gcc você tem que fazer as seguintes alterações.

Depois de configurar, edite o `config.h' e `include/my_config.h' e altere a linha que diz

#define HAVE_SNPRINTF 1

para

#undef HAVE_SNPRINTF

E finalmente, no `mysqld.cc' você precisa adicionar um protótipo para initgroups.

#ifdef _AIX41
extern "C" int initgroups(const char *,int);
#endif

Se você precisar se alocar muita memória para o processo mysqld, não é suficiente apenas definir 'ulimit -d unlimited'. Você também deve configurar no mysqld_safe algo do tipo:

export LDR_CNTRL='MAXDATA=0x80000000'

Você pode encontrar mais sobre o uso de muita memória em: http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lrg_prg_support.htm.

2.6.6.5 Notas SunOS 4

No SunOS 4, é necessário a MIT-pthreads para compilar o MySQL, o que significa que você precisa do GNU make.

Alguns sistemas SunOS 4 tem problemas com bibliotecas dinâmicas e libtool. Você pode usar a seguinte linha do configure para evitar este problema:

shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static

Quando compilando readline, você pode obter alguns avisos sobre definições duplicadas que podem ser ignoradas.

Ao compilar o mysqld, vão existir alguns alertas sobre implicit declaration of function que também podem ser ignoradas.

2.6.6.6 Notas Alpha-DEC-UNIX (Tru64)

Se você está usando o egcs 1.1.2 no Digital Unix, você atualizar par o gcc 2.95.2, já que o egcs no DEC tem vários erros graves !

Quando compilando programas com threads no Digital Unix, a documentação recomenda usar a opção -pthread para cc e cxx e as bibliotecas -lmach -lexc (em adição para -lpthread). Você deve executar o configure parecido com isto:

CC="cc -pthread" CXX="cxx -pthread -O" \
./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc"

Quando compilando o mysqld, você deve ver alguns avisos como estes:

mysqld.cc: In function void handle_connections()':
mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'

Você pode ignorar estes altertas com segurança. Eles ocorrem porque o configure só pode detectar erros e não alertas.

Se você inicia o servidor diretamente da linha de comando, você pode ter problemas com a finalização do servidor ao sair (log out). (Quando você sai, seu processo superior recebe um sinal SIGHUP.) Se isto acontecer, tente iniciar o servidor desta forma:

shell> nohup mysqld [options] &

nohup faz com que o comando que o segue ignore qualquer sinal SIGHUP enviado pelo terminal. De forma alternativa, inicie o servidor executando mysqld_safe, o qual invoca o mysqld usando nohup por você. See section 4.8.2 mysqld-safe, o wrapper do mysqld.

Se você tiver problemas quando compilar mysys/get_opt.c, apenas remova a linha #define _NO_PROTO do inicio do arquivo!

Se você estiver utilizando o compilador CC da Compac, a seguinte linha de configuração deverá funcionar:

CC="cc -pthread"
CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host"
CXX="cxx -pthread"
CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed all -arch host \
-noexceptions -nortti"
export CC CFLAGS CXX CXXFLAGS
./configure \
--prefix=/usr/local/mysql \
--with-low-memory \
--enable-large-files \
--enable-shared=yes \
--with-named-thread-libs="-lpthread -lmach -lexc -lc"
gnumake

Se você tiver problemas com a libtool, ao compilar com bibliotecas compartilhadas como no exemplo acima, quando estiver ligando ao mysqld, você deve conseguir contornar este problema usando:

cd mysql
/bin/sh ../libtool --mode=link cxx -pthread  -O3 -DDBUG_OFF \
-O4 -ansi_alias -ansi_args -fast -inline speed \
-speculate all \ -arch host  -DUNDEF_HAVE_GETHOSTBYNAME_R \
-o mysql  mysql.o readline.o sql_string.o completion_hash.o \
../readline/libreadline.a -lcurses \
../libmysql/.libs/libmysqlclient.so  -lm
cd ..
gnumake
gnumake install
scripts/mysql_install_db

2.6.6.7 Notas Alpha-DEC-OSF1

Se você tiver problemas com compilação e tem o DEC CC e o gcc instalados, tente executar o configure desta forma:

CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Se você tiver problemas com o arquivo `c_asm.h', você pode criar e usar um arquivo `c_asm.h' 'burro' com:

touch include/c_asm.h
CC=gcc CFLAGS=-I./include \
CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql

Perceba que os seguintes problemas com o programa ld pode ser corrigido fazendo o download do último kit de atualização da DEC (Compaq) de http://ftp.support.compaq.com/public/unix/.

Com o OSF1 V4.0D e o compilador "DEC C V5.6-071 no Digital Unix V4.0 (Rev. 878)" o compilador tem alguns comportamentos estranhos (simbolos asm indefinidos). /bin/ld também aparece estar quebrado (problemas com erros _exit undefined ocorrendo ao ligar no mysqld). Neste sistema, temos compilado o MySQL com a seguinte linha configure, depois de substituir /bin/ld com a versão do OSF 4.0C:

CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql

Com o compilador da Digital "C++ V6.1-029", o seguinte deve funcionar:

CC=cc -pthread
CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
       -arch host
CXX=cxx -pthread
CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all \
          -arch host -noexceptions -nortti
export CC CFLAGS CXX CXXFLAGS
./configure --prefix=/usr/mysql/mysql --with-mysqld-ldflags=-all-static \
            --disable-shared --with-named-thread-libs="-lmach -lexc -lc"

Em algumas versões do OSF1, a função alloca() está quebrada. Corrija isto removendo a linha no `config.h' que define 'HAVE_ALLOCA'.

A função alloca() pode também ter um protótipo incorreto em /usr/include/alloca.h. O alerta resultante deste erro pode ser ignorado.

configure irá usar a seguinte biblioteca thread automaticamente: --with-named-thread-libs="-lpthread -lmach -lexc -lc".

Quando usar o gcc, você também pode tentar executar configure desta forma:

shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....

Se você tiver problemas com sinais (MySQL finalzar inesperadamente sobre alta carga), você pode ter encontrado um erro com threads e sinais no SO. Neste caso você pode dizer ao MySQL para não usar sinais configurando-o com:

shell> CFLAGS=-DDONT_USE_THR_ALARM \
       CXXFLAGS=-DDONT_USE_THR_ALARM \
       ./configure ...

Isto não afeta a performance do MySQL, mas tem efeitos colaterais que não permitem finalizar clientes que estão ``dormindo'' em uma conexão com mysqladmin kill ou mysqladmin shutdown. Neste caso o cliente irá morrer quando ele receber o próximo comando.

Com gcc 2.95.2, você provavelmente encontrará o seguinte erro de compilação:

sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566
Please submit a full bug report.

Para corrigir isto você deve alterar para o diretório sql e fazer um ``corta e cola'' da última linha gcc, mas altere -O3 para -O0 (ou adicione -O0 imediatamente depois de gcc se você não tiver algumas opção -O na sua linha de compilação.) Depois disto feito você deve apenas voltar ao diretório superior e executar make novamente.

2.6.6.8 Notas SGI Irix

Se você estiver usando Irix Versão 6.5.3 ou mais novo, o mysqld só irá conseguir criar threads se você executá-lo como um usuário com privilégios de CAP_SCHED_MGT (como root) ou dar ao servidor mysqld este privilégio com o seguinte comando shell:

shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld

Você pode precisar indefinir alguns simbolos em `config.h' depois de executar configure e antes de compilar.

Em algumas implementações Irix, a função alloca() está quebrada. Se o servidor mysqld morrer em alguma instrução SELECT, remova as linhas de `config.h' que definem HAVE_ALLOC e HAVE_ALLOC_H. Se mysqladmin create não funciona, remova a linha do `config.h' que define HAVE_READDIR_R. Você também deve precisar remover a linha HAVE_TERM_H.

A SGI recomenda que você instale todos os patches desta página: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html

No mínimo, você deve instalar o último rollup do kernel, o último rollup rld, e o último rollup libc.

Definitivamente você precisará de todos patches POSIX nesta página, para suporte pthreads:

http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html

Se você obter o seguinte erro quando estiver compilando o `mysql.cc':

"/usr/include/curses.h", line 82: error(1084): invalid combination of type

Digite o seguinte no diretório topo da sua árvore fonte do MySQL:

shell> extra/replace bool curses_bool < /usr/include/curses.h \
> include/curses.h
shell> make

Existem relatos de problemas com organização de threads. Se somente uma thread estiver executando, o sistema fica lento. Pode se evitar isto iniciando outro cliente. Isto pode acarretar num crescimento de 2 para 10 vezes na velocidade de execução para a outra thread. Isto é um problema não compreendido com threads Irix; você deve improvisar para encontrar soluções até que isto seja resolvido.

Se você estiver compilando com gcc, você pode usar o seguinte comando configure:

CC=gcc CXX=gcc CXXFLAGS=-O3 \
./configure --prefix=/usr/local/mysql --enable-thread-safe-client \
--with-named-thread-libs=-lpthread

No Irix 6.5.11 com Irix C nativo e compiladores C++ ver. 7.3.1.2, o seguinte irá funcionar

CC=cc CXX=CC CFLAGS='-O3 -n32 -TARG:platform=IP22 -I/usr/local/include \
-L/usr/local/lib' CXXFLAGS='-O3 -n32 -TARG:platform=IP22 \
-I/usr/local/include -L/usr/local/lib' ./configure \
--prefix=/usr/local/mysql --with-innodb --with-berkeley-db \
--with-libwrap=/usr/local \
--with-named-curses-libs=/usr/local/lib/libncurses.a

2.6.6.9 Notas SCO

A versão atual foi testado somente nos sistemas ``sco3.2v5.0.4'' e ``sco3.2v5.0.5''. A versãoo para o ``sco 3.2v4.2'' também tem tido muito progresso.

Até o momento o compilador recomendado no OpenServer é o gcc 2.95.2. Com isto você deve estar apto a compilar o MySQL apenas com:

CC=gcc CXX=gcc ./configure ... (opções)
  1. Para o OpenServer 5.0.X você precisa usar gcc-2.95.2p1 ou mais novo da Skunkware. http://www.SCO.com/skunkware/ e ecolher o pacote OpenServer browser ou por ftp em ftp to ftp2.SCO.com no diretório pub/skunkware/osr5/devtools/gcc.
  2. Você precisa do GCC versão 2.5.x para este produto e do sistema de desenvolvimento. Eles são necessários nesta versão do SCO Unix. Você não pode usar apenas o sistema GCC Dev.
  3. Você deve obter o pacote FSU Pthreads e instalá-lo primeiro. Pode ser obtido em http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz. Você pode também obter um pacote precompilado de http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz.
  4. FSU Pthreads pode ser compilado com SCO Unix 4.2 com tcpip, ou OpenServer 3.0 ou OpenDesktop 3.0 (OS 3.0 ODT 3.0), com o Sistema de Desenvolvimento da SCO instalado usando uma boa versão do GCC 2.5.x ODT ou OS 3.0, no qual você necessitará de uma boa versão do GCC 2.5.x. Existem vários problemas sem uma boa versão. Esta versão do produto necessita do sistema de Desenvolvimento SCO Unix. Sem ele, você estará perdendo as bibliotecas e o editor de ligação necessário.
  5. Para construir a FSU Pthreads no seu sistema, faça o seguinte:
    1. Execute ./configure no diretório `threads/src' e selecione a opção SCO OpenServer. Este comando copia `Makefile.SCO5' para `Makefile'.
    2. Execute make.
    3. Para instalar no diretório padrão `/usr/include', use o usuário root, depois mude para o diretório `thread/src' e execute make install
  6. Lembre de usar o GNU make quando estiver construindo o MySQL.
  7. Se você não iniciou o mysqld_safe como root, você provavelmente só irá obter, por padrão, os 110 arquivos abertos por processo. O mysqld irá gravar uma nota sobre isto no arquivo log.
  8. Com o SCO 3.2V5.0.5, você deve usar o FSU Pthreads versão 3.5c ou mais nova. Você deve também usar o gcc 2.95.2 ou mais novo. O seguinte comando configure deve funcionar:
    shell> ./configure --prefix=/usr/local/mysql --disable-shared
    
  9. Com SCO 3.2V4.2, você deve usar FSU Pthreads versão 3.5c ou mais nova. O seguinte comando configure deve funcionar:
    shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
           ./configure \
               --prefix=/usr/local/mysql \
               --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
               --with-named-curses-libs="-lcurses"
    
    Você pode ter alguns problemas com alguns arquivos de inclusão. Neste caso, você pode encontrar novos arquivos de inclusão específicos do SCO em http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz. Você deve descompactar este arquivo no diretório `include' da sua árvore fonte do MySQL.

Notas de desenvolvimento SCO:

Se você deseja instalar o DBI no SCO, você deve editar o `Makefile' em DBI-xxx e cada subdiretório.

Note que o exemplo abaixo considera o gcc 2.95.2 ou mais novo:

OLD:                                  NEW:
CC = cc                               CC = gcc
CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =

LD = ld                               LD = gcc -G -fpic
LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib

LD = ld                               LD = gcc -G -fpic
OPTIMISE = -Od                        OPTIMISE = -O1

OLD:
CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include

NEW:
CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include

Isto é porque o carregador dinâmico Perl não irá carregar os módulos DBI se elas foram compiladas com icc ou cc.

Perl trabalha melhor quando compilado com cc.

2.6.6.10 Notas SCO Unixware Version 7.0

Você deve usar uma versão de MySQL pelo menos tão recente quando a Versão 3.22.13 e UnixWare 7.1.0 porque esta versão corrige alguns problemas de portabilidade sob o Unixware.

Nós temos compilado o MySQL com o seguinte comando configure no UnixWare Versão 7.1.x:

CC=cc CXX=CC ./configure --prefix=/usr/local/mysql

Se você deseja usar o gcc, deverá ser usado o gcc 2.95.2 ou mais novo.

CC=gcc CXX=g++ ./configure --prefix=/usr/local/mysql

  1. A SCO fornece Patches do Sistema Operacional em ftp://ftp.sco.com/pub/unixware7 para UnixWare 7.1.1 e 7.1.3 ftp://ftp.sco.com/pub/openunix8 para OpenUNIX 8.0.0
  2. A SCO fornece informação sobre Security Fixes em ftp://ftp.sco.com/pub/security/OpenUNIX para OpenUNIX ftp://ftp.sco.com/pub/security/UnixWare para UnixWare

2.6.7 Notas OS/2

O MySQL usa poucos arquivos aberto. Por isto, você deve adicionar uma linha parecida com a abaixo em seu arquivo `CONFIG.SYS':

SET EMXOPT=-c -n -h1024

Se você não fizer isto, provavelmente vai ter o seguinte erro:

File 'xxxx' not found (Errcode: 24)

Quando usar o MysQL com OS/2 Warp 3, o FixPack 29 ou superior é necessário. Com OS/2 Warp 4, FixPack 4 ou acima é necessário. Isto é uma exigência da biblioteca Pthreads. O MySQL deve estar instalado em uma partição que suporta nomes longos de arquivos como no HPFS, FAT32, etc.

O script `INSTALL.CMD' deve ser executado pelo próprio `CMD.EXE' do OS/2 e opde não funcionar com shells substitutas como o `4OS2.EXE'.

O script `scripts/mysql-install-db' foi renomeado. Agora ele é chamado `install.cmd' e é um script REXX, que irá atualizar as configurações padrões de segurança do MySQL e criar os ícones na WorkPlace Shell para o MySQL.

Suporte a módulos dinâmicos é compilado mas não totalmente testado. Módulos dinâmicos devem ser compilados usando a biblioteca run-time Pthreads.

gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
    -o example udf_example.cc -L../lib -lmysqlclient udf_example.def
mv example.dll example.udf

Nota: Devido a limitações no OS/2, o nome do módulo UDF não deve esceder 8 caracteres. Módulos são armazenados no diretório `/mysql2/udf'; o script safe-mysqld.cmd irá colocar este diretório na variável de ambiente BEGINLIBPATH. Quando usando módulos UDF, extensões específicas são ignoradas -- consuidera-se que seja `.udf'. Por exemplo, no Unix, o módulo compartilhado deve ser nomeado `example.so' e você deve carregar uma função dele desta forma:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";

No OS/2, o módulo deve ter o nome de `example.udf', mas você não deve especificar a extensão do módulo:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME "example";

2.6.8 Notas Novell NetWare

Portar o MySQL para NetWare foi um grande esforço da Novell. Os clientes da Novell estarão satisfeitos ao notarem que o NetWare 6.5 virá com os binários do MySQL, completa com uma licença de uso comercial automatica para todos os servidores executando esta versão do NetWare.

See section 2.1.4 Instalando o MySQL no NetWare.

MySQL para NetWare é compilado usando um combinação do Metrowerks CodeWarrior for NetWare e uma versão especial de compilação cruzada do GNU autotools. Verifique esta seção no futuro para mais informações sobre construção e otimização do MySQL para NetWare.

2.6.9 Notas BeOS

Nós já falamos com alguns desenvolvedores BeOS que disseram que o MySQL está 80% portado para o BeOS, mas nós não sabemos qual a situação no momento.

2.7 Comentários de Instalação do Perl

2.7.1 Instalando Perl no Unix

O suporte Perl para o MySQL é fornecido pela interface cliente DBI/DBD. See section 12.5 API Perl do MySQL. O código do cliente Perl DBD/DBI exige Perl Versão 5.004 ou posterior. A interface não funcionará se você tiver uma versão mais do Perl.

O suporte MySQL Perl também exige que você tenha instalado o suporte a programação do cliente MySQL. Se você instalou o MySQL a partir de arquivos RPM, os programas cliente estão no cliente RPM, mas o suporte a programação do cliente está no RPM de desenvolvimento. Certifique de se instalar este RPM posteriormente.

Na Versão 3.22.8, o suporte Perl é distribuído separadamente do dsitribuição principal do MySQL. Se você quiser instalar o suporte Perl, os arquivos que você precisrá pode ser obtidos em http://www.mysql.com/downloads/api-dbi.html.

As distribuições Perl são fornecidas como arquios tar compactados e são chamados `MODULE-VERSION.tar.gz', onde MODULE é o nome do modulo e VERSION é o número da versão. Você deve conseguir as distribuições Data-Dumper, DBI, e DBD-mysql e instalá-las nesta ordem. O procedimento de instalação é mostrado aqui. O exemplo mostrado é para o módulo Data-Dumper, mas o procedimento é o mesmo para todas as distribuições:

  1. Descompacte as distribuições no diretório atual:
    shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf -
    
    Este comando cria um diretório chamado `Data-Dumper-VERSION'.
  2. Entre no diretório principal da distribuição descompactada:
    shell> cd Data-Dumper-VERSION
    
  3. Contrua a dsitribuição e compile tudo:
    shell> perl Makefile.PL
    shell> make
    shell> make test
    shell> make install
    

O comando make test é importante porque verifica que o módulo está funcionando. Note que ao executar este comando durante a instalação do DBD-mysql para exercitar o código da interface, o servidor MySQL deve estar em execução ou teste irá falhar.

É uma boa idéia reconstruir e reinstalar a distribuição DBD-mysql mesmo se você instalar uma nova distribuição do MySQL, particularmente se você notar simntomas como se todos os seus scripts DBI realizarem dump core depois de você atualizar o MySQL.

Se você não tem o direito para instalar os módulos Perl no diretório de sistema ou se você quiser instalar módulos Perl locais, a seguinte referência pode ajudá-lo:

http://servers.digitaldaze.com/extensions/perl/modules.html#modules

Procure sob o título Installing New Modules that Require Locally Installed Modules.

2.7.2 Instalaando ActiveState Perl no Windows

Para instalar o módulo DBD do MySQL com ActiveState Perl no Windows, você deve fazer o seguinte:

O acima deve funcionar pelo menos com o ActiveState Perl Versão 5.6.

Se você não puder fazer o mostrado acima funcionar, você deve instalar o driver MyODBC e conectar ao servidor MySQL através do ODBC:

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

2.7.3 Problemas Usando a Interface Perl DBI/DBD

Se Perl informar que não pode encontrar o módulo `../mysql/mysql.so', então o problema mais provável é que o Perl não pode localizar a biblioteca compartilhada `libmysqlclient.so'.

Você pode corrigir isto por qualquer um dos seguintes métodos:

Se voce receber os seguintes erros de DBD-mysql, você provavelmente está usando gcc (ou usando um binário antigo compilado com gcc):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

Adicione -L/usr/lib/gcc-lib/... -lgcc ao comando de ligação quando a biblioteca `mysql.so' estiver construída (verifique a saída de make para `mysql.so' quando você compilar o cliente Perl). A opção -L deve especificar o caminho do diretório onde `libgcc.a' está localizada no seu sistema.

Outra causa deste problema pode ser que Perl e o MySQL não são compilados com gcc. Neste caso, você pode resolver o problema compilando ambos com gcc.

Se você receber o seguinte erro de DBD-mysql quando executar o teste:

t/00base............install_driver(mysql) failed:
Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169.

significa que você precisa adicionar a biblioteca compactada, -lz, a sua linha de ligação. Isto pode ser feito com a seguinte alteração no arquivo `lib/DBD/mysql/Install.pm':

$sysliblist .= " -lm";

Altere esta linha para:

$sysliblist .= " -lm -lz";

Depois disto, você deve executar 'make realclean' e proceder com o instalação desde o início.

Se você quiser usar o módulo Perl em um sistema que não suporta ligação dinâmica (como SCO) você pode gerar uma versão estática do Perl que inclui DBI e DBD-mysql. O modo que isto funciona é que você gera uma versão do Perl com o çodigo DBI ligado e instalado no topo do seu Perl atual. Entao você o utiliza para construir uma versão do Perl que adicionalmente tem o código DBD ligado em si, e instale-o.

No SCO, você deve ter as seguintes variáveis de ambiente configuradas:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
ou
shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
/usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
/usr/skunk/man:

Primeiro crie um Perl que inclui um módulo DBI ligado estaticamente executando estes comandos no diretório onde a sua distribuição DBI está localiada:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Então você deve intalar o novo Perl. A saída de make perl indicará o comando make exato que você precisará executar para realizar a instalação. No SCO, isto é make -f Makefile.aperl inst_perl MAP_TARGET=perl.

A seguir use o Perl récem criado para criar outro Perl que também inclui uma DBD::mysql estaticamente ligado rodando estes comandos no diretório onde sua distribuição DBD-mysql está localizada:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> make perl

Finalmente você deve instalar este novo Perl. Novamente, a saída de make perl indica o comando a usar.


Go to the first, previous, next, last section, table of contents.