在端口 4567 上运行的 nodejs 应用程序出现 MySQL Access Denied 错误

在端口 4567 上运行的 nodejs 应用程序出现 MySQL Access Denied 错误

我可以从 centos 6.7 上的命令行连接到 mysql 数据库:

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

还:

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

但是,如果我通过导入器插件从运行在端口 4567 上的 NodeBB 进行连接,我会收到访问被拒绝错误:

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)

我已尝试授予权限*.* to 'root'@'%'(这是一个流浪者盒子)但错误仍然存​​在。

有人能指出这可能是什么原因造成的吗?我可以使用相同的凭据从同一框上的简单 nodejs 脚本连接到 MySQL,而不会出现错误。

SELinux 已禁用:

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

答案1

如果这是 CentOS 的默认安装,则应检查 SELinux 配置。SELinux 为您的系统提供了细粒度的访问保护系统。这由内核中的 SELinux 模块控制。

任何由 SELinux 控制的访问都将被审计守护进程记录(在 CentOS 的默认安装中)。日志位于/var/log/audit/audit.log,应该包含一些特定于您的 MySQL 访问尝试的条目。

在 CentOS6 上,它默认设置为强制执行。这是在 中配置的/etc/sysconfig/selinux。更改后需要重新启动。

您可以禁用 SELinux,但最合适的方法是向 SELinux 添加策略以允许特定应用程序访问 MySQL。您可以按照手册

相关内容