Ошибка отказа в доступе к MySQL из приложения nodejs, запущенного на порту 4567

, я могу подключиться к базе данных mysql из командной строки в centos 6.7:

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

также:

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

Но если я подключаюсь с NodeBB, работающего на порту 4567, через плагин импортера, я получаю сообщение об ошибке отказа в доступе:

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)

Я попытался предоставить привилегии на *. * Пользователю 'root' @ '%' (это бродячая коробка), но ошибка сохраняется.

Кто-нибудь может предположить, что могло быть причиной этого? Я могу без ошибок подключиться к MySQL из простого скрипта nodejs на том же компьютере, используя те же учетные данные.

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
задан 22 November 2015 в 18:16
1 ответ

Если это установка CentOS по умолчанию, вам следует проверить конфигурацию SELinux. SELinux обеспечивает детализированную систему защиты доступа к вашей системе. Это контролируется модулем SELinux в ядре.

Любой доступ, контролируемый SELinux, будет регистрироваться (при установке CentOS по умолчанию) демоном аудита. Журнал находится в /var/log/audit/audit.log и должен содержать некоторые записи, относящиеся к вашим попыткам доступа к MySQL.

По умолчанию в CentOS6 он установлен на принудительное исполнение. Это настраивается в / etc / sysconfig / selinux . После изменения этого параметра требуется перезагрузка.

Вы можете отключить SELinux, но наиболее правильный способ - добавить в SELinux политику, разрешающую доступ к MySQL из определенного приложения. Вы можете сделать это, как описано в руководстве .

0
ответ дан 4 December 2019 в 06:52

Теги

Похожие вопросы