Express连接MySQL报错:qwer用户被拒,root用户可正常创建连接池
问题解决方法
核心原因是你的MySQL用户配置和连接方式不匹配:你创建的是qwer@%用户,但连接时用localhost作为host,MySQL会把localhost和%当作两个不同的主机身份处理——localhost默认走本地socket连接,不会匹配%对应的TCP/IP权限规则,所以会提示权限拒绝。
给你两个直接的解决办法:
办法一:修改连接配置,强制用TCP/IP连接
把sqlPool.js里的host从localhost改成127.0.0.1,这样连接会走TCP/IP协议,匹配qwer@%的权限配置:
const mysql = require('mysql'); const sqlPool = mysql.createPool({ host: '127.0.0.1', port: 3306, user: 'qwer', password: 'qwer@0.0.0-MySQL', database: 'gl1_ui', connectionLimit: 16 });
办法二:创建qwer@localhost用户并授权
登录MySQL客户端,执行以下SQL,专门给localhost连接创建qwer用户并同步权限:
CREATE USER `qwer`@`localhost` IDENTIFIED WITH mysql_native_password BY 'qwer@0.0.0-MySQL'; -- 同步原qwer@%的权限 GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Event, Execute, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `gl1_ui`.* TO `qwer`@`localhost`; GRANT Create View, Delete, Event, Execute, File, Grant Option, Index, Insert, Process, References, Reload, Select, Show Databases, Show View, Shutdown, Trigger, Update ON *.* TO `qwer`@`localhost`; FLUSH PRIVILEGES;
内容的提问来源于stack exchange,提问作者Hata
相关产品推荐
相关产品推荐

