MySQL Access Denied erro do aplicativo nodejs em execução na porta 4567

1

Eu posso conectar a um banco de dados mysql a partir da linha de comando no centos 6.7:

mysql -u root -h 127.0.0.1 --protocol=TCP -p;

também:

mysql -u root -h localhost --protocol=TCP -p;

Mas se eu me conectar do NodeBB sendo executado na porta 4567 por meio de um plugin do importador, recebo um erro de acesso negado:

From a node application for importing data to the database I see:
22/11 09:11 [28144] - error: Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)
    at Handshake.Sequence._packetToError (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14)
    at Handshake.ErrorPacket (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/protocol/sequences/Handshake.js:101:18)
    at Protocol._parsePacket (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/protocol/Protocol.js:270:23)
    at Parser.write (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/protocol/Parser.js:77:12)
    at Protocol.write (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/var/www/nodebb/node_modules/nodebb-plugin-import-punbb2/node_modules/mysql/lib/Connection.js:82:28)
    at Socket.emit (events.js:107:17)
    at readableAddChunk (_stream_readable.js:163:16)
    at Socket.Readable.push (_stream_readable.js:126:10)
    at TCP.onread (net.js:538:20)

Eu tentei conceder privilégios em *.* to 'root'@'%' (essa é uma caixa errante), mas o erro persiste.

Alguém pode sugerir o que pode estar causando isso? Eu posso conectar ao MySQL a partir de um simples script nodejs na mesma caixa sem erro usando as mesmas credenciais.

O SELinux está desativado:

sudo cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#   enforcing - SELinux security policy is enforced.
#   permissive - SELinux prints warnings instead of enforcing.
#   disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#   targeted - Only targeted network daemons are protected.
#   strict - Full SELinux protection.
SELINUXTYPE=targeted
    
por codecowboy 22.11.2015 / 10:32

1 resposta

0

Se esta é uma instalação padrão do CentOS você deve verificar sua configuração do SELinux. O SELinux oferece um sistema de proteção de acesso de alta qualidade para o seu sistema. Isso é controlado pelo módulo SELinux no kernel.

Qualquer acesso controlado pelo SELinux será registrado (em uma instalação padrão do CentOS) pelo deamon de auditoria. O log está localizado em /var/log/audit/audit.log e deve ter algumas entradas específicas para suas tentativas de acesso ao MySQL.

Por padrão, no CentOS6, ele está configurado para impor. Isso está configurado em /etc/sysconfig/selinux . Depois de alterar isso, é necessária uma reinicialização.

Você pode desabilitar o SELinux, mas a maneira mais apropriada é adicionar uma política ao SELinux para permitir o acesso do MySQL a partir de um aplicativo específico. Você pode fazer isso conforme explicado em o manual .

    
por 22.11.2015 / 15:07