Midway + TypeORM项目部署到BT后启动失败,MySQL报错

Midway + TypeORM项目部署到BT后启动失败,MySQL报错

前沿

您需要先了解这篇文章:https://blog.csdn.net/weixin_45687201/article/details/139336111

错误日志

  • 服务状态开启后就失败
  • 项目日志,输出
\> my-midway-project@1.0.0 start
\> cross-env NODE_ENV=production node ./bootstrap.js
2024-06-21 16:51:00.709 ERROR 16665 Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at Handshake.Sequence.\_packetToError (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
at Handshake.ErrorPacket (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/sequences/Handshake.js:123:18)
at Protocol.\_parsePacket (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Protocol.js:291:23)
at Parser.\_parsePacket (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Parser.js:433:10)
at Parser.write (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Parser.js:43:10)
at Protocol.write (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Protocol.js:38:16)
at Socket.<anonymous> (/www/wwwroot/web/midway-project/node_modules/mysql/lib/Connection.js:88:28)
at Socket.<anonymous> (/www/wwwroot/web/midway-project/node_modules/mysql/lib/Connection.js:526:10)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:315:12)---at Protocol.\_enqueue (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/www/wwwroot/web/midway-project/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at PoolConnection.connect (/www/wwwroot/web/midway-project/node_modules/mysql/lib/Connection.js:116:18)
at Pool.getConnection (/www/wwwroot/web/midway-project/node_modules/mysql/lib/Pool.js:48:16)
at /www/wwwroot/web/midway-project/node_modules/typeorm/driver/mysql/MysqlDriver.js:1012:18
at new Promise (<anonymous>)
at MysqlDriver.createPool (/www/wwwroot/web/midway-project/node_modules/typeorm/driver/mysql/MysqlDriver.js:1009:16)
at MysqlDriver.connect (/www/wwwroot/web/midway-project/node_modules/typeorm/driver/mysql/MysqlDriver.js:305:36)
at DataSource.initialize (/www/wwwroot/web/midway-project/node_modules/typeorm/data-source/DataSource.js:136:27)
at TypeORMDataSourceManager.createDataSource (/www/wwwroot/web/midway-project/node_modules/@midwayjs/typeorm/dist/dataSourceManager.js:31:26) {
code: 'ER_NOT_SUPPORTED_AUTH_MODE',
errno: 1251,
sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client',
sqlState: '08004',
fatal: true
}
2024-06-21 16:51:00.710 INFO 16665 [midway:bootstrap] exit with code:1

在这里插入图片描述

抓住关键信息:

# 客户端不支持服务器请求的认证协议;考虑升级MySQL客户端
qlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client'

解决方案

更改用户认证插件

输入root用户的密码登录MySQL

# 这里使用之前创建的 Vinca 用户进行登录
sudo mysql -u root -p

更改用户认证插件

代码示例:

# 将'your_mysql_username', 'localhost', 'your_mysql_password'替换为实际的MySQL用户名,主机和密码。
ALTER USER 'your_mysql_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_mysql_password';

如下实际应用场景操作:

# 将用户名为 Vinca 的用户的认证插件更改为 mysql_native_password
mysql> alter user 'Vinca'@'%' identified with mysql_native_password by 'Ecs@123****';# 刷新权限
mysql> flush privileges;# 退出 MySQL
mysql> exit;

开启服务

回到BT > 网站 > Node项目 > midwayService设置 > 服务状态(开启)

配置nginx

服务开启正常,但api接口依旧无法访问,您需要配置nginx的反向代理。

nginx反向代理:https://blog.csdn.net/weixin_45687201/article/details/139060839

server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:7001;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}
}

将上述配置保存为一个 .conf 文件,然后将其放置到 Nginx 的配置目录下,通常是 /etc/nginx/conf.d/ 目录。

最后,重新加载 Nginx 配置即可生效:

sudo systemctl reload nginx

现在,你应该能够通过 API Post 请求访问你的 Midway 项目了。请确保替换 your_domain.com 为你的域名或 IP 地址。

参考链接: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python练习题—传染问题(治愈)

传染(infect)某种传染病第一天只有一个患者&#xff0c;前五天为潜伏期&#xff0c;不发作也不会传染人第6天开始发作&#xff0c;从发作到治愈需要5天时间&#xff0c;期间每天传3个人 求第N天共有多少患者 思路&#xff1a; 开始时认为可以进行判断五天或者五天十天后进行计算…

[modern c++][11] 非类型模板参数

前言&#xff1a; 我们再使用 std::get 的时候发现其模板并不是一个类型&#xff0c;而是一个整数值&#xff0c;用来标识从某个位置获取值&#xff0c;比如 std::pair 类型的数据 tmppair&#xff0c;那么就可以通过 std::get<0>(tmppair)来获取key的值&#xff0c;通过…

【Python新手入门指南】Linux-conda环境安装与使用参考

文章目录 前言一、conda是什么&#xff1f;二、安装步骤三、使用Conda来管理Python环境1. 创建环境2. 激活环境3. 安装软件包4. 查看环境5. 删除环境&#xff1a;如果您不再需要某个环境&#xff0c;可以使用以下命令将其删除&#xff1a; 前言 如果你是一位经验丰富的Python开…

oracle merge的使用

Oracle中的MERGE语句是一个非常强大的工具&#xff0c;它允许用户在一个SQL语句中同时执行INSERT和UPDATE操作。以下是关于Oracle MERGE语句的详细使用说明&#xff1a; 1. 基本语法 MERGE INTO target_table USING source_table ON (merge_condition) WHEN MATCHED THEN …

【SQL Server数据库】熟悉DBMS的基本操作及数据库的创建

目录 一、SQL SERVER基本操作 二、用Management Studio创建数据库 1、使用Management Studio创建数据库bookdb&#xff0c;各项参数采用默认设置。 2、使用Management Studio创建数据库EDUC 3. 在EDUC中创建三个表&#xff0c;根据下面要求创建Student&#xff0c;Course&am…

昇思25天学习打卡营第01天|基本介绍快速入门

一、什么是昇思MindSpore&#xff1f; 昇思MindSpore是一个全场景深度学习框架&#xff0c;详见基本介绍 那什么是深度学习呢&#xff1f; 深度学习是一种特殊的机器学习&#xff0c;主要是利用了多层神经网络模拟人脑&#xff0c;自动提取特征并进行预测。 什么是机器学习…

Mac Terminal常用命令

1. 文件和目录操作&#xff1a; #ls : 列出当前目录下的文件和子目录 -- ls(list) #cd : 进入指定目录。 -- cd Documents。 cd(change directory)cd ..:返回上一级cd ~:返回家目录cd /:返回根目录 cd Documents/ 前往“文稿” #pwd : 显示当前工作目录的完整路径 -- pwd(prin…

【C++】模板详解

前言&#xff1a;在之前的学习我们发现我们无时无刻都用到模板这个东西&#xff0c;但是博主一直没有进行讲解&#xff0c;今天我们就一次性对模板进行一个整体的学习与讲解。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#…

Java 8 Stream API 中 distinct() 与 distinctByKey() 的区别是什么?如何使用它们来过滤重复元素?

在Java 8中&#xff0c;Stream API是一个强大的工具&#xff0c;它允许以声明性的方式处理数据集合&#xff0c;使得代码更加简洁且易于理解。distinct()和distinctByKey()是两种用于过滤重复元素的方法&#xff0c;虽然后者不是标准库直接提供的&#xff0c;但可以通过一些技巧…

计算机毕业设计Python+LSTM+Tensorflow股票分析预测 基金分析预测 股票爬虫 大数据毕业设计 深度学习 机器学习 数据可视化 人工智能

基于TensorFlow-LSTM的股票预测系统开题报告 一、研究背景与意义 随着信息技术的飞速发展&#xff0c;股票市场作为现代经济活动的重要组成部分&#xff0c;其价格波动受到广泛关注。投资者们迫切希望通过科学的方法预测股票价格&#xff0c;以优化投资决策&#xff0c;实现利…

【Java06】Java中的类与对象

1. 类和对象 Java中的类模版如下&#xff1a; [修饰符] class 类名 {0~n个构造器;0~n个成员变量;0~n个成员方法; }构造器是类创建对象的根本途径。如果没有显式定义构造器&#xff0c;系统会默认提供一个。成员变量、成员方法的定义和C类似&#xff0c;只不过多了修饰符。 Ja…

Interview preparation--elasticSearch正排索引原理

正排索引 ElastciSearch 适合做或者说擅长做全文检索&#xff0c;在做全文检索的时候&#xff0c;他会通过生成倒排索引的方式来辅助查询&#xff0c;生成一个词项到 文档id的一个倒排表&#xff0c;这样直接通过 词项可以快速找到所有的 稳定信息。 但是并不是所有的搜索都是…

python第一个多进程爬虫

使用 multiprocessing 模块实现多进程爬取股票网址买卖数据的基本思路是&#xff1a; 定义爬虫函数&#xff0c;用于从一个或多个股票网址上抓取数据。创建多个进程&#xff0c;每个进程执行爬虫函数&#xff0c;可能针对不同的股票或不同的网页。使用 multiprocessing.Queue …

前端基础——自学习梳理

超文本协议HTML <!DOCTYPE HTML> <html><head><meta charset"utf-8"> <style> /*Css*/.sty1{height:100px;width:100px;background-color: red;margin-top: 10px;float:left;margin-left: 10px;box-shadow: 10px 10px 10px #0000…

多路h265监控录放开发-(14)通过PaintCell自定义日历控件继承QCalendarWidget的XCalendar类

首先创建一个新类XCalendar继承QCalendarWidget类&#xff0c;然后在UI视图设计器中把日历提升为XCalendar&#xff0c;通过这个函数自己设置日历的样式 xcalendar.h #pragma once #include <QCalendarWidget> class XCalendar :public QCalendarWidget { public:XCal…

2024.06.24 刷题日记

17. 电话号码的字母组合 依然是昨天的回溯&#xff0c;思路是根据 index&#xff0c;来确定要回溯的对象&#xff1a; class Solution { public:vector<string> letterCombinations(string digits) {vector<string> results;if (digits.empty())return results; …

Linux 运维王者从不离手的10款工具

运维工程师在日常工作中频繁运用的10款工具&#xff0c;并细致阐述每款工具的功能、适用场景以及其卓越之处。 1. Shell脚本 功能&#xff1a;主要用于自动化任务和批处理作业。 适用场景&#xff1a;频繁用于文件处理、系统管理、简单的网络管理等操作。 优势&#xff1a;灵…

Java 抽象类

目录 1、什么是抽象类 2、定义抽象类 3、抽象类特性 4、 抽象类的作用 1、什么是抽象类 抽象类&#xff0c;顾名思义就是抽象的。该类没有包含足够的信息去描绘一个具体的对象&#xff0c;这样的类称为抽象类。抽象类着一种优化了的概念组织方式&#xff0c;它是所有子类的…

研究上百个小时,高手总结了这份 DALL-E 3 人物连续性公式(上)

上篇 Dall-E 3 讲了常见的 20 个公式&#xff0c;今天单独来讲一下人物连续性公式&#xff0c;这个公式来自 AshutoshShrivastava。 上篇回顾&#xff1a; 效果超好&#xff01;全新 DALL-E 3 必须掌握的 20 种公式使用方法上周末&#xff0c;DALL-E 3 正式加入 ChatGpt&…

嵌入式实验---实验八 ADC电压采集实验

一、实验目的 1、掌握STM32F103ADC电压采集程序设计流程&#xff1b; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、使用STM32F103R6采集可变电阻上的电压信号&#xff0c;并通过计算把当前ADC转换值和电压值显示在LCD1602液晶屏上&#xff1b; 2、对照电压表读数&…