Quando você conectar a um servidor MySQL, você normalmente deve usar uma senha. A senha não é transmitida em texto puro sobre a conexão, porém o algorítimo de criptografica não é muito forte e com algum esforço um atacante engenhoso pode quebrar a senha se ele conseguir capturar o tráfego entre o cliente e o servidor. Se a conexão entre o cliente e o servidor passar por uma rede não confiável, você deve usar um tunnel SSH para criptografar a comunicação.
        Todas outras informações são transferidas como texto que
        podem ser lido por qualquer um que consiga ver a conexão. Se
        você se preocupa com isto, você pode usar o protocol de
        compressão (No MySQL versão 3.22 e superiores) para tornar o
        tráfico muito mais dificil de decifrar. Para deixar tudo ainda
        mais seguro você deve usar ssh. Você pode
        encontrar um cliente ssh open source em
        http://www.openssh.org,
        e um cliente ssh comercial em
        http://www.ssh.com. Com
        isto, você pode obter uma conexão TCP/IP critografada entre um
        servidor MySQL e um cliente MySQL.
      
Se você estiver usando o MySQL 4.0, você também pode usar o suporte interno OpenSSL See Secção 4.4.10, “Usando Conexões Seguras”.
Para deixar um sistema MySQL seguro, você deve considerar as seguintes sugestões:
            Utilize senhas para todos os usuários MySQL. Lembre-se que
            qualquer um pode logar como qualquer outra pessoa
            simplesmente com mysql -u outro_usuário
            nome_bd se outro_usuário não
            tiver senha. Isto é um procedimento comum com aplicações
            cliente/servidor que o cliente pode especificar qualquer
            nome de usuário. Você pode alterar a senha de todos seus
            usuários editando o script
            mysql_install_db antes de executá-lo ou
            somente a senha para o usuário root do
            MySQL desta forma:
          
shell>mysql -u root mysqlmysql>UPDATE user SET Password=PASSWORD('nova_senha')->WHERE user='root';mysql>FLUSH PRIVILEGES;
            Não execute o daemon do MySQL como o usuário
            root do Unix. Isto é muito perigoso,
            porque qualquer usuário com privilégios
            FILE estará apto a criar arquivos como o
            root (por exemplo,
            ~root/.bashrc). Para prevenir esta
            situação, mysqld irá recusar a
            execução como root a menos que ele seja
            especificado diretamente usando a opção
            --user=root.
          
            O mysqld pode ser executado como um
            usuário normal sem privilégios. Você pode também criar
            um novo usuário Unix mysql para tornar
            tudo mais seguro. Se você executar o
            mysqld como outro usuário Unix, você
            não precisará alterar o usuário root
            na tabela user, porque nomes de usuário
            do MySQL não tem nada a ver com nomes de usuários Unix.
            Para iniciar o mysqld como outro usuário
            Unix, adicione uma linha user que
            especifica o nome de usuário para o grupo
            [mysqld] do arquivo de opções
            /etc/my.cnf ou o arquivo de opções
            my.cnf no diretório de dados do
            servidor. Por exemplo:
          
[mysqld] user=mysql
            Estas opções configuram o servidor para iniciar como o
            usuário designado quando você o inicia manualmente ou
            usando mysqld_safe ou
            mysql.server. Para maiores detalhes, veja
            Secção A.3.2, “Como Executar o MySQL Como Um Usuário Normal”.
          
            Não suportar links simbólicos para tabelas (Isto pode ser
            desabilitado com a opção --skip-symlink.
            Isto é muito importante caso você execute o
            mysqld como root, assim qualquer um que
            tenha acesso à escrita aos dados do diretório do mysqld
            podem apagar qualquer arquivo no sistema! See
            Secção 5.6.1.2, “Utilizando Links Simbólicos para Tabelas”.
          
            Verfique se o usuário Unix que executa o
            mysqld é o único usuário com
            privilégios de leitura/escrita nos diretórios de bancos de
            dados.
          
            Não forneça o privilégio
            PROCESS para todos os
            usuários. A saída de mysqladmin
            processlits mostra as consultas atualmente em
            execução, portanto qualquer usuário que consiga executar
            este comando deve ser apto a ver se outro usuário entra com
            uma consulta do tipo UPDATE user SET
            password=PASSWORD('não_seguro').
          
            O mysqld reserva uma conexão extra para
            usuários que tenham o privilégio
            process, portanto o
            usuário root do MySQL pode logar e
            verificar a atividade do servidor mesmo se todas as
            conexões normais estiverem em uso.
          
            Não conceda o privilégio
            FILE a todos os usuários.
            Qualquer usuário que possua este privilégio pode gravar um
            arquivo em qualquer lugar no sistema de arquivos com os
            privilégios do daemon mysqld! Para
            tornar isto um pouco mais seguro, todos os arquivos gerados
            com SELECT ... INTO OUTFILE são lidos
            por todos, e não se pode sobrescrever arquivos existentes.
          
            O privilégio FILE pode
            também ser usado para ler qualquer arquivo acessível para
            o usuário Unix com o qual o servidor está sendo executado.
            Pode ocorrer abusos como, por exemplo, usar LOAD
            DATA para carregar o arquivo
            /etc/passwd em uma tabela, que pode
            então ser lido com SELECT.
          
Se você não confia em seu DNS, você deve utilizar números IP no lugar de nomes de máquinas nas tabelas de permissão. De qualquer forma, você deve ter muito cuidado ao criar entradas de concessão utilizando valores de nomes de máquinas que contenham metacaractes!
            Se você deseja restrigir o número de conexões para um
            único usuário, você pode faze-lo configurando a variável
            max_user_connections no
            mysqld.
          
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.

