Em geral, o que você deve fazer é atualizar para a versão 4.0 um versão mais nova do MySQL:
            Após o upgrade, atualize a tabela de permissões para
            adicionar novos privilégios e recursos. O procedimento usa
            o script mysql_fix_privilege_tables e
            está descrito em Secção 2.5.6, “Atualizando a Tabela de Permissões”.
          
Edite qualquer script de inicialização ou arquivo de configuração para não utilizar nenhuma das opções obsoletas listadas posteriormente nesta seção.
            Converta seua arquivos ISAM antigos para
            arquivos MyISAM com o comando:
            mysql_convert_table_format database.
            (Este é um script Perl; ele exige que o DBI esteja
            instalado). Paa converter a tabela em um dado banco de
            dados, use este comando:
          
shell> mysql_convert_table_format database db_name
            Note que ele deve ser usado apenas se você usar se todas as
            tabelas em um dado banco de dados são
            ISAM ou MyISAM. Para
            evitar a conversão de tabelas de outros tipos para
            MyISAM, você pode listar explicitamente
            o nome de suas tabelas ISAM depois do
            nome do banco de dados na linha de comando. Você também
            pode executar uma instrução ALTER TABLE
            table_name TYPE=MyISAM para cada tabela
            ISAM para convertê-la para
            MyISAM.
          
Para descobir o tipo de uma determinada tabela, use esta instrução:
mysql> SHOW TABLE STATUS LIKE 'tbl_name';
            Certifique-se de que você não tem nenhum cliente MySQL que
            utiliza bibliotecas compartilhadas (com o Perl
            DBD-mysql). Se você tiver, você deve
            recompilá-las já que as estruturas usadas em
            libmysqlclient.so foram alteradas. O
            mesmo se aplica a outras interfaces MySQL, como Python
            MySQLdb.
          
        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;
            O MySQL 4.0 tem vários novos privilégios na tabela
            mysql.user. See Secção 4.4.1, “A Sintaxe de GRANT e REVOKE”.
          
            Para fazer estes novos privilégios funcionarem, deve se
            atualizar a tabela de permissões. O procedimento está
            descrito em Secção 2.5.6, “Atualizando a Tabela de Permissões”. Até
            que este script esteja executando todos os usuários têm os
            privilégios SHOW DATABASES,
            CREATE TEMPORARY TABLES e LOCK
            TABLES. Os privilégios SUPER e
            EXECUTE tiram o seu valor de
            PROCESS. REPLICATION
            SLAVE e REPLICATION CLIENT
            tiram o seu valor de FILE.
          
            Se você tiver qualquer script que crie novos usuários,
            você pode querer alterá-los para usar os novos
            privilégios. Se você não está usando o comando
            GRANT nos scripts, este é um bom momento
            para alterar os seus scripts e usar GRANT
            em vez de modificar a tabela de permissões diretamente.
          
            A partir da versão 4.0.2 a opção
            --safe-show-database está obsoleta (e não
            faz mais nada). See Secção 4.3.3, “Opções de Inicialização para o mysqld em
        Relação a Segurança.”.
          
            Se você receber um erro Access denied
            para novos usuários na versão 4.0.2, você deve verificar
            se você precisa de alguma das novas concessões que você
            não precisava antes. Em particular, você precisará
            REPLICATION SLAVE (em vez de
            FILE) para novos slaves.
          
            safe_mysqld é renomeado para
            mysqld_safe. Para compatibilidade com
            versões anteriores, as distribuições binárias, irão,
            por algum tempo, incluir safe_mysqld como
            um link simbólico para mysqld_safe.
          
            Suporte para InnoDB agora está incluído na distribuição
            binária. Se você contruir o MySQL a partir de um fonte, o
            InnoDB está configurado por padrão, Se você não usar o
            InnoDB e quiser economizar memória ao executar o servidor
            que possui suorte a InnoDB habilitado, use a opção de
            inicialização do servidor. Para compilar o MySQL sem
            suporte ao InnoDB, execute configure com
            a opção --without-innodb.
          
            O parâmetro de inicialização
            myisam_max_extra_sort_file_size e
            myisam_max_extra_sort_file_size são
            dados agora em bytes. (eram dados em megabytes antes da
            versão 4.0.3).
          
            O lock de sistema externo dos arquivos MyISAM/ISAM agora
            está desligado por padrão. Pode se ligá-los fazendo
            --external-locking. (Para a maioria dos
            usuários isto nunca é necessário).
          
A seguintes variáveis/opções de inicializaçao foram renomeadas:
| Nome Antigo | Novo Nome. | 
| myisam_bulk_insert_tree_size | bulk_insert_buffer_size | 
| query_cache_startup_type | query_cache_type | 
| record_buffer | read_buffer_size | 
| record_rnd_buffer | read_rnd_buffer_size | 
| sort_buffer | sort_buffer_size | 
| warnings | log-warnings | 
| --err-log | --log-error(paramysqld_safe) | 
            As opções de inicialização
            record_buffer,
            sort_buffer e warnings
            ainda funcionarão no MySQL 4.0 mas estãp obsoletas.
          
As seguintes veriáveis SQL mudaram o nome.
| Nome Antigo | Novo Nome. | 
| SQL_BIG_TABLES | BIG_TABLES | 
| SQL_LOW_PRIORITY_UPDATES | LOW_PRIORITY_UPDATES | 
| SQL_MAX_JOIN_SIZE | MAX_JOIN_SIZE | 
| SQL_QUERY_CACHE_TYPE | QUERY_CACHE_TYPE | 
Os nomes antigos ainda funcionam no MySQL 4.0 mas estão obsoletos.
            Você deve usar SET GLOBAL
            SQL_SLAVE_SKIP_COUNTER=# em vez de SET
            SQL_SLAVE_SKIP_COUNTER=#.
          
            As opções de inicialização
            --skip-locking e
            --enable-locking foram renomeadas para
            --skip-external-locking e
            --external-locking.
          
            SHOW MASTER STATUS agora retorna um
            conjunto vazio se o log binário não estiver habilitado.
          
            SHOW SLAVE STATUS agora retorna um
            conjunto vazio se o slave não está inicializado.
          
            O mysqld agora tem a opção
            --temp-pool habilitada por padrão já que
            isto da melhor rendimento com alguns SO (Principalmente no
            Linux).
          
            Colunas DOUBLE e FLOAT
            agora respeitam o parâmetro UNSIGNED no
            armazenamento (antes, UNSIGNED era
            ignortado por estas colunas).
          
            ORDER BY coluna DESC ordena valores
            NULL por último, como no MySQL 4.0.11.
            Na versão 3.23 e anteriores da versão 4.0, isto nem sempre
            era consistente.
          
            SHOW INDEX tem duas colunas a mais
            (Null e Index_type)
            que ele tinha nas versões 3.23.
          
            CHECK, SIGNED,
            LOCALTIME e
            LOCALTIMESTAMP são agora palavras
            reservadas.
          
            O resultado de todos os operadores bitwise
            (|, &,
            <<, >> e
            ~) agora são unsigned. Isto pode causar
            problemas se você estiver usando-as em um contexto onde
            você quer um resultado com sinal. See
            Secção 6.3.5, “Funções de Conversão”.
          
            Nota: quando você usa
            subtração entre valores inteiros onde um deles é do tipo
            UNSIGNED, o resultado será sem sinal. Em
            oyras palavras, antes de atualizar para o MySQL 4.0, você
            deve verificar sua aplicação para os casos onde você
            está subtraindo um valor de uma entidade sem sinal e quer
            um número negativo como resposta ou subtraindo um valor sem
            sinal de uma coluna do tipo inteiro. Você pode disabilitar
            este comportamento usando a opção
            --sql-mode=NO_UNSIGNED_SUBTRACTION ao
            iniciar o mysqld. See
            Secção 6.3.5, “Funções de Conversão”.
          
            Para usar MATCH ... AGAINST (... IN BOOLEAN
            MODE) com suas tabelas, você precisa
            recontruí-las com REPAIR TABLE nome_tabela
            USE_FRM.
          
            LOCATE() e INSTR()
            são caso sensitivo se um dos argumentos é uma string
            binária. De outra forma elas são caso-insensitivo.
          
            STRCMP() agora usa o conjunto de
            caracteres atual ao fazer comparações, o que significa que
            o comportamento padrão das comparações agora é
            caso-insensitivo.
          
            HEX(string) agora retorna os caracteres
            na string convertidos para hexadecimal.
            Se você quiser converter um número para hexadecimal, você
            deve se assugurar que você chama HEX()
            com um argumento numérico.
          
            Na versão 3.23, INSERT INTO ... SELECT
            sempre tem o IGNORE habilitado. Na
            versão 4.0.1, o MySQL irá parar (e possívelmente fazer um
            roll back) por padrão no caso de
            mysqld_safe ser renomeado para
            mysqld_safe. Por algum tempo
            incluiremos em nossa distribuição binária o
            mysqld_safe como um link simbólico para
            mysqld_safe.
          
            um erro se você não especificar IGNORE.
          
            As funções antigas da API C
            mysql_drop_db(),
            mysql_create_db() e
            mysql_connect() não sã mais suportadas
            a menos que você compile o MySQL com
            CFLAGS=-DUSE_OLD_FUNCTIONS. No entanto,
            é preferível alterar o cliente para utilizar a nova API
            4.0.
          
            Na estrutura MYSQL_FIELD,
            length e max_length
            foram alterados de unsigned int para
            unsigned long. Isto não deve causar
            problemas, exceto que eles podem gerar mensagens de avisos
            quando quando usado como argumento em uma classe
            printf() de funções.
          
            Você deve usar TRUNCATE TABLE quando
            quiser deletar todos os registros de uma tabela e você não
            precisa obter uma contagen de quantas colunas forma
            deletadas. (DELETE FROM table_name
            retorna a contagem de linhas na versão 4.0, e
            TRUNCATE TABLE é mais rápido.)
          
            Você receberá um erro se tiver um LOCK
            TABLES ativo ou transações ao tentar executar
            TRUNCATE TABLE ou DROP
            DATABASE.
          
            Você deve usar inteiros para armazenar valores em colunas
            BIGINT (em vez de usar strings, como
            você fez no MySQL 3.23). Usar strings ainda funicona, mas
            usar inteiros é mais eficiente.
          
            O formato de SHOW OPEN TABLE alterou.
          
            Clientes multi-thread devem usar
            mysql_thread_init() e
            mysql_thread_end(). See
            Secção 12.1.14, “Como Fazer um Cliente em Threads”.
          
            Se você quiser recompilar o módulo Perl
            DBD::mysql, você deve conseguir o
            DBD-mysql versão 1.2218 ou mais novo
            porque os módulos DBD mais antigos usam a chamada obsoleta
            mysql_drop_db(). A versão 2.1022 ou mais
            nova é recomendada.
          
            Na versão RAND(seed) retorna uma série
            de número randômicas diferente que na 3.23; isto foi feito
            para uma diferenciação maior de
            RAND(seed) e
            RAND(seed+1).
          
            O tipo padrão retornado por IFNULL(A,B)
            agora está configurado para ser o mais 'geral' dos tipos de
            A e B. (A ordem
            geral-para-específco é string, REAL ou
            INTEGER).
          
Se você estiver executando o MySQL Server no Windows, veja Secção 2.5.8, “Atualizando o MySQL no Windows”. Se você estiver usando replicação, veja Secção 4.11.2, “Visão Geral da Implementação da Replicação”.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

