You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js应用无法登录MariaDB,相同凭证在其他终端可正常登录

解决MariaDB Node.js连接权限问题的建议

1. 检查用户主机绑定权限

MariaDB的用户权限与主机严格绑定,命令行登录可能使用Unix socket(对应localhost),但Node.js驱动默认通过TCP/IP连接,此时对应的主机标识是127.0.0.1而非localhost。

  • 登录MariaDB管理端,执行命令查看用户的主机配置:
    SELECT user, host FROM mysql.user WHERE user IN ('nikol', 'root');
    
  • 如果结果中仅存在nikol@localhost或root@localhost,需添加对应127.0.0.1的权限:
    -- 为nikol用户添加127.0.0.1的数据库权限
    GRANT ALL PRIVILEGES ON nodedb.* TO 'nikol'@'127.0.0.1' IDENTIFIED BY 'nbuser';
    -- 为root用户添加127.0.0.1的全局权限
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '你的root密码';
    -- 刷新权限生效
    FLUSH PRIVILEGES;
    
  • 修改Node.js配置中的host为127.0.0.1重试:
    const pool = mariadb.createPool({
         host: '127.0.0.1', 
         user:'nikol', 
         password: 'nbuser',
         database: 'nodedb'
    });
    

2. 排查密码编码或特殊字符问题

若密码包含特殊字符(如!@#$%^&*),Windows命令行输入时可能自动转义,但Node.js字符串直接读取可能存在编码差异。可尝试重置为纯字母数字密码测试:

SET PASSWORD FOR 'nikol'@'localhost' = PASSWORD('test123');
SET PASSWORD FOR 'nikol'@'127.0.0.1' = PASSWORD('test123');
FLUSH PRIVILEGES;

同步修改Node.js代码中的密码后重试连接。

3. 检查MariaDB绑定地址配置

打开Windows下的MariaDB配置文件my.ini(通常在安装目录的data文件夹内),找到bind-address项:

  • 若设置为bind-address = 127.0.0.1或bind-address = 0.0.0.0,则允许本地TCP连接;
  • 若被注释或设置为其他IP,需修改为127.0.0.1,然后重启MariaDB服务。

4. 验证防火墙或安全软件拦截

Windows防火墙、第三方杀毒软件可能拦截Node.js访问MariaDB的3306端口。可临时关闭防火墙测试,或在防火墙规则中添加允许Node.js程序访问3306端口的条目。

5. 确认MariaDB服务状态

打开Windows服务管理器,找到MariaDB服务,检查状态是否为“正在运行”。若未运行,右键启动服务后重试连接。

内容的提问来源于stack exchange,提问作者Николай Беляков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:24:19