安装Strapi后执行npm run develop遇ER_NOT_SUPPORTED_AUTH_MODE错误求助
解决Strapi连接MySQL时ER_NOT_SUPPORTED_AUTH_MODE错误
问题原因
MySQL 8.0及以上版本默认采用caching_sha2_password认证协议,而Strapi依赖的MySQL客户端暂不支持该协议,导致数据库连接失败。
解决步骤
登录MySQL命令行
打开终端或命令提示符,执行命令登录MySQL(替换your_password为你的root密码):mysql -u root -p输入密码后进入MySQL交互界面。
修改用户认证方式
在MySQL命令行中执行以下SQL语句,将root用户的认证方式改为mysql_native_password(替换your_root_password为实际密码):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_root_password'; FLUSH PRIVILEGES;若Strapi配置中Host填写的是
127.0.0.1,需额外执行:ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'your_root_password'; FLUSH PRIVILEGES;重启Strapi服务
返回Strapi项目目录,重新执行启动命令:npm run develop
备选方案(若上述方法无效)
打开Strapi项目的config/database.js(TypeScript项目为config/database.ts)文件,在数据库连接配置中添加authPlugin项:
module.exports = ({ env }) => ({ connection: { client: 'mysql', connection: { host: env('DATABASE_HOST', '127.0.0.1'), port: env.int('DATABASE_PORT', 3306), database: env('DATABASE_NAME', 'store'), user: env('DATABASE_USERNAME', 'root'), password: env('DATABASE_PASSWORD', 'your_password'), authPlugin: 'mysql_native_password' // 添加该配置项 }, }, });
保存文件后再次执行npm run develop启动服务。
内容的提问来源于stack exchange,提问作者Eze
相关产品推荐
相关产品推荐

