Se você encontrar erros de Accesso Negado
        (Access denied) quando tentar conectar-se ao servidor MySQL, a
        lista abaixo indica alguns caminhos que você pode seguir para
        corrigir o problema:
      
            Depois de instalar o MySQL, você executou o script
            mysql_install_db para configurar o
            conteúdo inicial das tabelas de permissões ? Se não,
            faça isto. See Secção 4.4.4, “Configurando os Privilégios Iniciais do MySQL”. Testes
            os privilégios iniciais executando este comando:
          
shell> mysql -u root test
            O servidor deve deixar você conectar sem erros. Você
            também deve assegurar que exista o arquivo
            user.MYD no diretório do banco de
            dados do MySQL. Normalmente ele fica em
            CAMINHO/var/mysql/user.MYD. onde
            CAMINHO é o caminho para a raiz da
            instalação do MySQL.
          
Depois de terminar uma instalação, você deve conectar ao servidor e configurar seus usuários e suas permissões de acesso.
shell> mysql -u root mysql
            O servidor deve permitir a conexão pois o usuário
            root MySQL vem inicialmente configurado
            sem senha. Isto também é um risco de segurança, portanto
            configurar a senha do usuário root é
            algo que deve ser feito enquanto você configura os outros
            usuários do MySQL.
          
            Se você tentar se conectar como root e
            obter este erro:
          
Access denied for user: '@unknown' to database mysql
            isto significa que você não possui um registro na tabela
            user com o valor
            'root' no campo User e
            que o mysqld não pode rsolver o nome de
            máquina do cliente. Neste caso, você deve reiniciar o
            servidor com a opção --skip-grant-tables
            e editar seu arquivo /etc/hosts ou o
            \Windows\hosts para adicionar uma
            entrada para sua máquina.
          
Se você obter um erro como o seguinte:
shell> mysqladmin -u root -pxxxx ver
Access denied for user: 'root@localhost' (Using password: YES)
Significa que você está usando uma senha incorreta. See Secção 4.4.8, “Configurando Senhas”.
            Se você esqueceu a senha de root, você pode reiniciar o
            mysqld com a opção
            --skip-grant-tables para alterar a senha.
            See Secção A.4.2, “Como Recuperar uma Senha de Root Esquecida”.
          
            Se você obter o erro acima mesmo se não tiver configurado
            uma senha, significa que você tem algum arquivo
            my.ini configurado para passar alguma
            senha incorreta. See Secção 4.1.2, “Arquivo de Opções my.cnf”. Você
            pode evitar o uso de arquivos de opções com a opção
            --no-defaults, como a seguir:
          
shell> mysqladmin --no-defaults -u root ver
            
            Se você atualizou uma instalação existente do MySQL de um
            versão anterior à versão 3.22.11 para a Versão 3.22.11
            ou posterior, você executou o script
            mysql_fix_privilege_tabels ? Se não
            faça isto. A estrutura das tabelas de permissões alteraram
            com a Versão 3.22.11 do MySQL quando a instrução
            GRANT se tornou funcional. See
            Secção 2.5.6, “Atualizando a Tabela de Permissões”.
          
Se os seus privilégios parecerem alterados no meio de uma sessão, pode ser que o superusuário os alterou. A recarga das tabelas de permissões afeta novas conexões dos clientes, mas ela também afeta conexões existentes como indicado em Secção 4.4.3, “Quando as Alterações nos Privilégios tem Efeito”.
            Se você não consegue fazer a sua senha funcionar,
            lembre-se que você deve usar a função
            PASSWORD() se você configurar a senha
            com instruções INSERT,
            UPDATE ou SET
            PASSWORD. A função PASSWORD()
            é desnecessária se você especificar a senha usando a
            instrução GRANT ... IDENTIFIED BY ou o
            comando mysqladmin password. See
            Secção 4.4.8, “Configurando Senhas”.
          
            localhost é um sinônimo para seu nome
            de máquina local, e é também a máquina padrão em que
            clientes tentam se conectar se você não especificar
            explicitamente o nome da máquina. Entretanto, conexões
            para localhost não funcionam se você
            estiver executando em um sistema que utilize MIT-pthreads
            (conexões localhost são feitas
            utilizando sockets Unix, que não são suportadas pelas
            MIT-pthreads). Para evitar este problema nestes sistemas,
            você deve utilizar a opção --host para
            nomear explicitamente o servidor. Isto fará uma conexão
            TCP/IP ao servidor myssqld. Neste caso,
            você deve ter seu nome de máquina real nos registros da
            tabela user no servidor. (Isto é
            verdadeiro mesmo se você estiver executando um programa
            cliente na mesma máquina que o servidor.)
          
            Se você obter o erro Access denied
            quando tentando conectar ao banco de dados com
            mysql -u nome_usuário _nome_bd, você
            pode ter um problema com a tabela user.
            Verifique isto executando mysql -u root
            mysql e usando esta sentença SQL:
          
mysql> SELECT * FROM user;
            O resultado deve incluir uma entrada com as colunas
            Host e User combinando
            com o nome de seu computador e seu nome de usuário no
            MySQL.
          
            A mensagem de erro Access denied irá
            dizer a você com qual usuário você está tentando se
            logar, a máquina que está tentando conectar e se você
            está utilizando uma senha ou não. Normalmente, você deve
            ter um registro na tabela user que
            combine exatamente com o nome de máquina e o nome de
            usuário que forem fornecidos na mensagem de erro. Por
            exemplo, se você obter uma mensagem de erro que contenha
            Using password: NO, isto significa que
            você está tentando se conectar sem uma senha.
          
            Se você obter o seguinte erro quando estiver tentando
            conectar de uma máquina diferente da que o servidor MySQL
            estiver executando, então não deve existir um registro na
            tabela user que combine com esta
            máquina:
          
Host ... is not allowed to connect to this MySQL server
            Você pode corrigir isto utilizando a ferramenta de linha de
            comando mysql (no servidor!) para
            adicionar um registro à tabela user,
            db ou host para
            coincidir com o usuário e nome de máquina de onde você
            está tentando conectar, depois execute o comando
            mysqladmin flush-privileges. Se você
            não estiver executando o MySQL Versão 3.22 e você não
            sabe o número IP ou o nome da máquina da qual estiver
            conectando, você deve colocar uma entrada com o valor
            '%' na coluna Host da
            tabela user e reiniciar o
            mysqld com a opção
            --log na máquina onde é executado o
            servidor. Depois tente conectar a partir da máquina
            cliente, a informação no log do MySQL irá indicar como
            você está realmente conectando. (Então troque o
            '%' na tabela user com
            o nome da máquina mostrado pelo log. De outra forma você
            teria um sistema que seria inseguro.)
          
Outra razão para este erro no Linux pode ser porque você está utilizando uma versão binária do MySQL que é compilada com uma versão diferente da glibc que você está usando. Neste caso você deve atualizar seu SO/Glibc ou fazer o download da versão fonte do MySQL e compilá-la. Um RPM fonte é, normalmente, fácil de compilar e instalar, logo, isto não é um grande problema.
Se você obter uma mensagem de erro onde o nome da máquina não é exibido ou, no lugar do nome da máquina existir um IP, mesmo se você tenta a conexão com um nome de máquina:
shell> mysqladmin -u root -pxxxx -h some-hostname ver
Access denied for user: 'root@' (Using password: YES)
            Isto significa que o MySQL obteve algum erro quando tentava
            resolver o IP para um nome de maquina. Neste caso você pode
            executar mysqladmin flush-hosts para
            zerar o cache DNS interno. See Secção 5.5.5, “Como o MySQL Utiliza o DNS”.
          
Algumas soluções permanentes são:
Tente descobrir o que está errado com seu servidor DNS e corrija os erros.
Especifique números IPs no lugar de nomes nas tabelas de privilégios do MySQL.
                Inicie o mysqld com
                --skip-name-resolve.
              
                Inicie o mysqld com
                --skip-host-cache.
              
                Conecte à localhost se você estiver
                executando o servidor e o cliente na mesma máquina.
              
                Coloque os nomes das máquinas clientes em
                /etc/hosts.
              
            Se mysql -u root test funciona mas
            mysql -h nome_servidor -u root test
            resultar em Access denied, então você
            pode não ter o nome correto para a sua máquina na tabela
            user. Um problema comum é quando o valor
            de Host na entrada da tabela user
            especifica um nome de máquina não qualificado, mas as
            rotinas de resolução de nomes de seu sistema retornam um
            nome qualificado completo do domínio (ou vice-versa). Por
            exemplo, se você tem uma entrada com o nome
            'tcx' na tabela user,
            mas seu DNS diz ao MySQL que o nome da máquina é
            'tcx.subnet.se', a entrada não irá
            funcionar. Tente adicionar um registro à tabela
            user que contenha o número IP de sua
            máquina como o valor da coluna Host.
            (Uma alternativa, seria adicionar um registro à tabela
            user com o valor de
            Host contendo um metacaracter, por
            exemplo, 'tcx.%'. Entretanto, o uso de
            nomes de máquinas terminando com
            ‘%’ é
            inseguro e não é
            recomendado!)
          
            Se mysql -u nome_usuário test funciona
            mas mysql -u nome_usuário outro_bd não
            funconar, você não possui uma entrada para
            outro_bd listado na tabela
            db.
          
            Se mysql -u nome_usuário nome_bd
            funciona quando executado no próprio servidor, mas
            mysql -u nome_máquina -u nome_usuário
            nome_bd não funciona quando executado em outra
            máquina cliente, você não possui o nome da máquina
            cliente listado na tabela user ou na
            tabela db.
          
            Se você não estiver entendendo porque obtem
            Access denied, remova da tabela
            user todas as entradas da coluna
            Host que contenham meta caracteres
            (entradas que contenham ‘$’
            ou ‘_’). Um erro muito comum
            é inserir uma nova entrada com
            Host='%' e
            User='algum usuário',
            pensando que isto irá permitir a você especificar
            localhost para conectar da mesma
            máquina. A razão disto não funcionar é que os
            privilégios padrões incluem uma entrada com
            Host='localhost' e
            User=''. Como esta
            entrada tem o valor 'localhost' em
            Host que é mais específica que
            '%', ela é usada no lugar da nova
            entrada quando se conectar de localhost!
            O procedimento correto é inserir uma segunda entrada com
            Host='localhost' e
            User='algum_usuário',
            ou remover a entrada com
            Host='localhost' e
            User= ''.
          
            Se você obter o seguinte erro, você pode ter um problema
            com a tabela db ou a tabela
            host:
          
Access to database denied
            Se a entrada selecionada da tabela db
            tiver um valor vazio na coluna Host,
            tenha certeza que exista uma ou mais entradas
            correspondentes na tabela host
            especificando quais máquinas aplicam-se à tabela
            db.
          
            Se você obter o erro quando estiver utilizando comandos SQL
            SELECT ... INTO OUTFILE ou LOAD
            DATA INFILE, a entrada na tabela
            user provavelmente não tem o privilégio
            file habilitado.
          
            
            
            
            Lembre-se que programas clientes irão usar parâmetros de
            conexões especificados em arquivos de configuração ou
            variáveis ambientais. See
            Apêndice F, Variáveis de Ambientes do MySQL. Se parecer que
            algum cliente está enviando parâmetros errados para a
            conexão e você não os especificou na linha de comando,
            verifique seu ambiente e o arquivo
            .my.cnf no seu diretório home. Você
            pode também conferir os arquivos de configurações do
            servidor MySQL, apesar de não ser interessante gravar
            configurações de cliente nestes arquivos. See
            Secção 4.1.2, “Arquivo de Opções my.cnf”. Se você obter a mensagem de
            acesso negado (Access denied) quando
            estiver executando um cliente sem opções, tenha certeza
            que você não especificou uma senha antiga em nenhum de
            seus arquivos de opções! See
            Secção 4.1.2, “Arquivo de Opções my.cnf”.
          
            Se você fizer alterações para as tabelas de permissões
            diretamente (utilizando uma instrução
            INSERT ou UPDATE) e
            suas alterações parecem ser ignoradas, lembre que você
            deve usar uma instrução FLUSH
            PRIVILEGES ou executar um comando
            mysqladmin flush-privileges para o
            servidor ler novamente as tabelas com os privilégios. De
            outra forma, suas alterações não farão efeito até que o
            servidor seja reiniciado. Lembre-se que depois de configurar
            a senha de root com um comando
            UPDATE, não será necessário
            especificar a senha até que você atualize os privilégios,
            pois o servidor ainda não saberá que você alterou a
            senha!
          
            Se você tiver problemas de acesso com Perl, PHP, Python ou
            um programa ODBC, tente conectar ao servidor com
            mysql -u nome_usuário nome_bd ou
            mysql -u nome_usuário -psua_senha
            nome_bd. Se você consegue conectar com o cliente
            mysql, existe algum problema com seu
            programa e não o acesso aos privilégios (Note que não
            espaço entre -p e a senha; você também
            pode utilizar a sintaxe
            --password=sua_senha para especificar a
            senha. Se você utilizar a opção -p
            sozinha, o MySQL irá lhe solicitar a senha.)
          
            Para testar, iniciae o daemon mysqld com
            a opção --skip-grant-tables. Então você
            pode alterar as tabelas de permissões do MySQL e utilizar o
            script mysqlaccess para conferir se suas
            modificações fizeram o não o efeito desejado. Quando
            você estiver satisfeito com suas alterações, execute
            mysqladmin flush-privileges para dizer ao
            servidor mysqld para iniciar utilizando
            as novas tabelas com os privilégios.
            Nota: Recarregar as tabelas
            de permissões sobrescreve a opção
            --skip-grant-tables. Isto lhe permite dizer
            ao servidor para começar a utilizar as tabelas de
            permissões novamente sem reiniciá-lo.
          
            Se tudo mais falhar, inicie o servidor
            mysqld com uma opção de depuração
            (por exemplo, --debug=d,general,query).
            Isto irá imprimir informações de máquinas e usuários
            sobre tentativas de conexões, e também informações sobre
            cada comando disparado. See
            Secção E.1.2, “Criando Arquivos Trace (Rastreamento)”.
          
            Se você tiver outros problemas com as tabelas de
            permissões do MySQL e sente que deve enviar o problema para
            a lista de discussão, sempre forneça um descarga das
            tabelas de permissões do seu MySQL. Você pode descarregar
            as tabelas com o comando mysqldump mysql.
            Como sempre, envie seus problemas utilizando o script
            mysqlbug. See
            Secção 1.7.1.3, “Como relatar erros ou problemas”. Em alguns casos você pode
            precisar reiniciar o mysqld com a opção
            --skip-grant-tables para executar o
            mysqldump.
          
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.

