xiaozhi-server项目: https://github.com/xinnan-tech/xiaozhi-esp32-server/tree/main
全模块启动文档: https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/Deployment_all.md
小智客户端相关开源项目:
xiaozhi-web-client:https://github.com/TOM88812/xiaozhi-web-client
pyxiaozhi(按住发送): https://github.com/huangjunsen0406/py-xiaozhi
Xiaozhi-webrtc(数字人): https://github.com/dairoot/xiaozhi-webrtc
本博客用来记录开源项目xiaozhi-esp32-server 启动的详细步骤;参考官网文档https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/docs/Deployment_all.md, 重复记录主要是用于一些特殊化配置, vscode中启动java以及一些安装过程中问题的的记录。
过程中如有疑惑,可直接参考官网的md文件。
部署好服务端之后:可以查看https://blog.csdn.net/qq_45056135/article/details/160531760?spm=1001.2014.3001.5502 去部署客户端
1. 环境搭建
1.1. 安装MySQL
1.1.1. 验证是否已经安装mysql
Python
mysql --vserion
出现版本号 → 已安装 例如:mysql Ver 8.0.36 for macos14 on arm64
command not found → 没安装
Case1: 如果本机已经安装了MySQL,可以直接在数据库中创建名为xiaozhi_esp32_server的数据库。
Python
CREATE DATABASE xiaozhi_esp32_server CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Case2: 如果没有安装则安装mysql,如果已经安装了则跳过这部分
Python
# 利用docker安装mysql
docker run \
--name xiaozhi-esp32-server-db -e \
MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
-p 13306:3306 \
-e MYSQL_DATABASE=xiaozhi_esp32_server \
-e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
-e TZ=Asia/Shanghai \
-d mysql:latest
# 在你的电脑上,用 Docker 自动安装、自动配置、
# 自动启动一个 MySQL 数据库,端口 13306,密码 123456,自动创建好小智服务需要的库xiaozhi_esp32_server。
# mysql容器名字为xiaozhi-esp32-server-db
docker run \
--name xiaozhi-esp32-server-db -e \
MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
-p 13306:3306 \
-e MYSQL_DATABASE=xiaozhi_esp32_server \
-e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
-e TZ=Asia/Shanghai \
-d mysql:8.0
--restart=always
如果没有 mysql:latest 镜像会拉取这个镜像的
1.1.1.1. 连接数据测试可以正常使用
Python
# 连接数据库。macbook
mysql -h 127.0.0.1 -P 3306 -u root -p12345678
# other
mysql -h 127.0.0.1 -P 3306 -u root -p123456
mysql -h 127.0.0.1 -P 33306 -u root -p123456
# 显示数据库
show databses;
# 如下显示说明成功
xiaozhi_esp32_server

1.1.2. mysql 数据目录进行挂载 [docker部署才需要]
1.1.2.1. 数据备份
Python
# 数据备份
# 1. 先查看原容器是否运行(确认容器名正确)
docker ps | grep xiaozhi-esp32-server-db
# 2. 创建宿主机临时目录,用于备份数据
mkdir -p /tmp/mysql_backup
mkdir -p /opt/wjg/mysql_data/data
# 3. 拷贝容器内MySQL数据到宿主机临时目录
# MySQL容器内默认数据目录是 /var/lib/mysql
# 所有文件
docker cp xiaozhi-esp32-server-db:/var/lib/mysql/ /opt/wjg/mysql_data/data
# 目录
docker cp xiaozhi-esp32-server-db:/var/lib/mysql /opt/wjg/mysql_data/data
/opt/wjg/mysql_data/conf
"Mounts": [
{
"Type": "bind",
"Source": "/opt/qingyao/mysql_data/data",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/opt/qingyao/mysql_data/conf/my.cnf",
"Destination": "/etc/mysql/my.cnf",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
[mysqld]
port = 3306
character-set-server = utf8mb4
lower_case_table_names = 1
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = FALSE
max_connections = 1000
innodb_buffer_pool_size = 1G
1.1.2.2. 停止并删除原容器
原容器未挂载目录,必须删除后重新创建(容器创建后无法修改挂载参数):
Bash
# 停止容器
docker stop xiaozhi-esp32-server-db
# 删除容器(仅删容器,备份数据已在宿主机)
docker rm xiaozhi-esp32-server-db
1.1.2.3. 重新启动容器并挂载数据目录
Python
# 1. 创建宿主机持久化数据目录(建议用非临时目录,如/opt/mysql_data)
mkdir -p /opt/mysql_data
chmod 777 /opt/mysql_data # 赋予权限,避免MySQL启动权限报错
我的是(/opt/wjg/mysql_data/data)
# 2. 将备份的数据拷贝到新的持久化目录
cp -r /tmp/mysql_backup/mysql/* /opt/mysql_data/
# 3. 重新启动容器,添加-v参数挂载目录(核心修改)
# 容器名称 xiaozhi-esp32-server-db-mnt
docker run \
--name xiaozhi-esp32-server-db-mnt -e \
MYSQL_ROOT_PASSWORD=123456 \
-p 33306:3306 \
-e MYSQL_DATABASE=xiaozhi_esp32_server \
-e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
-e TZ=Asia/Shanghai \
-v /opt/wjg/mysql_data/data:/var/lib/mysql \
-v /opt/wjg/mysql_data/conf:/etc/mysql/my.cnf \
-d mysql:latest
# 容器名称 xiaozhi-esp32-server-db
docker run \
--name xiaozhi-esp32-server-db -e \
MYSQL_ROOT_PASSWORD=123456 \
-p 13306:3306 \
-e MYSQL_DATABASE=xiaozhi_esp32_server \
-e MYSQL_INITDB_ARGS="--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci" \
-e TZ=Asia/Shanghai \
-v /opt/wjg/mysql_data/data:/var/lib/mysql \
-v /opt/wjg/mysql_data/conf:/etc/mysql/my.cnf \
-d mysql:latest
1.1.2.4. 验证挂载是否成功
Bash
# 1. 查看容器是否正常运行
docker ps | grep xiaozhi-esp32-server-db-mnt
# 2. 登录MySQL,创建测试表/数据
mysql -h 127.0.0.1 -P 13306 -u root -p123456
# 进入MySQL后执行:
use xiaozhi_esp32_server;
create table test (id int);
insert into test values (1);
exit;
# 3. 停止并删除容器,重新启动后检查数据是否还在
docker stop xiaozhi-esp32-server-db && docker rm xiaozhi-esp32-server-db
# 重新执行步骤3的docker run命令(无需再拷贝备份,因为数据已在/opt/mysql_data)
# 再次登录MySQL,查看test表和数据是否存在,存在则挂载成功
1.2. 安装redis
1.2.1. 验证本地是否已经有redis
Python
redis-cli --version
输出版本号 → 已装 Redis
command not found → 没装
1.2.2. 如果没有安装则
Python
# mac
brew install redis
# docker 安装
docker run \
--name xiaozhi-esp32-server-redis \
--restart=always \
-d -p 6379:6379 redis
docker run \
--name xiaozhi-esp32-server-redis \
--restart=always \
-d -p 16379:6379 redis
1.2.3. 连接redis
Python
# mac
redis-cli -h 127.0.0.1 -p 6379 -a 123456
# server
redis-cli -h x.x.x.121 -p 6379 -a 123456
# 测试
set name jordan
get name
# 退出
exit
1.3. 安装jdk21
1.3.1. 验证jdk是否已经安装
Python
java -version
输出版本号 → 已装 jdk
command not found → 没装
1.3.2. 安装jdk
Python
apt install openjdk-21-jdk
# 下载源文件
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
mkdir -p /usr/local/java
tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/java
vim /etc/profile
jdk-21.0.9
# 配置环境变量
export JAVA_HOME=/usr/local/java/jdk-21.0.9
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 生效环境变量
source /etc/profile
# 验证安装
java -version
1.4 安装maven
1.4.1. 验证是否已经安装了maven
Python
mvn -version
输出版本号 → 已装 jdk
command not found → 没装
1.4.2. 安装maven [已经安装的直接跳过]
Python
# 下载maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz
# # 解压到 /usr/local/
tar -zxvf apache-maven-3.9.11-bin.tar.gz -C /usr/local/
# 重命名(可选,方便后续配置)
mv /usr/local/apache-maven-3.9.11 /usr/local/maven
# 配置环境变量
vim /etc/profile
#
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
# 生效环境变量
source /etc/profile
# 验证安装
mvn -version
1.5. vscode 中使用 java [非vscode用户可以跳过]
windows安装java: https://blog.csdn.net/Coin_Collecter/article/details/136825041
vscode使用java: https://blog.csdn.net/m0_73972962/article/details/144424454
Python
https://www.oracle.com/java/technologies/downloads/?er=221886#jdk21-windows
1.5.1. vscode中配置java
- 设置 -->
java.home--> 选择对应的服务器 --> setting.json

如果是本地

如果是服务器

1.5.2. ### settings.json文件如下
mac
JSON
{
"workbench.colorTheme": "Default Dark+",
"redhat.telemetry.enabled": true,
"java.jdt.ls.java.home": "/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home",
"chat.editor.fontSize": 12,
"debug.console.fontSize": 12,
"scm.inputFontSize": 12,
"terminal.integrated.fontSize": 14,
"chat.fontSize": 12,
"window.zoomLevel": 1.2,
"editor.fontLigatures": false,
"git.confirmSync": false,
"vue.autoInsert.dotValue": true,
"claudeCode.preferredLocation": "panel"
}
查看javahome目录
Python
echo $JAVA_HOME
Python
# mac
{
"redhat.telemetry.enabled": true,
"java.jdt.ls.java.home": "/opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk/Contents/Home"
}
1.5.3. 其他注意点
被 **public 修饰的类,名称必须和文件名完全一致(包括大小写);没有 public 修饰的类,名称可以和文件名不一致**。
Python
vscode中使用java
Extension Pack for Java
Java Extension Pack
测试是否可以运行java文件
Python
// HelloWorld.java:Java 入门HelloWorld示例
public class HelloWorld {
// 程序入口方法(main方法是Java程序的执行起点)
public static void main(String[] args) {
// 向控制台输出"Hello World!"(System.out.println()是打印并换行的方法)
System.out.println("Hello World!");
// 可选:额外打印一句中文,验证环境是否支持中文
System.out.println("Java 入门成功!");
}
}
1.6. 安装node.js
1.6.1 验证是否安装node.js
Python
node -v
输出版本号 → 已装 jdk
command not found → 没装
1.6.2. 如果没有安装那么
Python
# mac
brew install node
#
2. 运行项目
Python
1. 启动springboot [manager-api:java]
2. 启动vue [manager-web]
3. 启动python代码 [xiaozhi-server:app.py]
4.
2.1. manager-api
Python
想要成功启动这个部分,你需要能正确的配置mysql, 和redis
3.1 安装JDK21,设置JDK环境变量
3.2 安装Maven,设置Maven环境变量
3.3 使用Vscode编程工具,安装好Java环境相关插件
3.4 使用Vscode编程工具加载manager-api模块
在src/main/resources/application-dev.yml中配置数据库连接信息
Plain
# mysql配置 username 和 password替换为你自己的
spring:
datasource:
username: root
password: 123456
在src/main/resources/application-dev.yml中配置Redis连接信息
Plain
# redis相关配置 password替换为你自己的
spring:
data:
redis:
host: localhost
port: 6379
password: 123456
database: 0
3.5 运行主程序
本项目为SpringBoot项目,启动方式为: 打开Application.java运行Main方法启动
Plain
路径地址:
src/main/java/xiaozhi/AdminApplication.java
当你看到输出日志时,说明你的manager-api启动成功了。
Plain
2025-xx-xx 22:11:12.445 [main] INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
2025-xx-xx 21:28:53.873 [main] INFO xiaozhi.AdminApplication - Started AdminApplication in 16.057 seconds (process running for 17.941)
http://localhost:8002/xiaozhi/doc.html
2.1.1. 可能出现的错误
case1: mysql配置报错, 说明用户名和密码有问题,
SQL
2026-04-25 15:57:56.572 [Druid-ConnectionPool-Create-293583290] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:mysql://127.0.0.1:3306/xiaozhi_esp32_server?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:114)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:837)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:420)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:238)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:180)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1703)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1801)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2946)
2.2. 运行manager-web程序
4.1 安装nodejs
4.2 使用Vscode编程工具加载manager-web模块
终端命令进入manager-web目录下
Plain
npm install
然后启动
Plain
npm run serve
请注意,如果你的manager-api的接口不在http://localhost:8002,请在开发时,修改 main/manager-web/.env.development中的路径
运行成功后,你需要使用浏览器,打开智控台,链接:++http://127.0.0.1:8001++ ,注册第一个用户。第一个用户即是超级管理员,以后的用户都是普通用户。普通用户只能绑定设备和配置智能体;超级管理员可以进行模型管理、用户管理、参数配置等功能。
重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。
重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。
重要:注册成功后,使用超级管理员账号,登录智控台,在顶部菜单找到模型配置,然后在左侧栏点击大语言模型,找到第一条数据智谱AI,点击修改按钮, 弹出修改框后,将你注册到的智谱AI的密钥填写到API密钥中。然后点击保存。
- 如果一切顺利打开http://localhost:8001/ 你就可以看到如下页面
- 第一次登陆最好记住你的密码 这个用户创建一次,而且默认是第一次的时候权限最高

2.3. python 项目启动
2.3.1. 安装Python环境
Python
conda create -n xiaozhi-esp32-server python=3.10 -y
conda activate xiaozhi-esp32-server
# 添加清华源通道
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
# 处理音频的包
conda install libopus -y
conda install ffmpeg -y
# 在 Linux 环境下进行部署时,如出现类似缺失 libiconv.so.2 动态库的报错 请通过以下命令进行安装
conda install libiconv -y
2.3.2. 创建conda环境
Python
# 继续使用conda环境
conda activate xiaozhi-esp32-server
# 进入到你的项目根目录,再进入main/xiaozhi-server
cd main/xiaozhi-server
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements.txt
2.3.3. 下载语音识别模型文件
modelscope[sensevoicesmall]: https://www.modelscope.cn/models/iic/SenseVoiceSmall
本项目语音识别模型,默认使用SenseVoiceSmall模型,进行语音转文字。因为模型较大,需要独立下载,下载后把model.pt 文件放在models/SenseVoiceSmall 目录下。下面两个下载路线任选一个。
Python
- 线路一:阿里魔搭下载++SenseVoiceSmall++
- 线路二:百度网盘下载++SenseVoiceSmall++ 提取码:
qvna
model.pt文件放在这里

测试asr语音模型是否有效:
Python
# 可以识别本地模型
trust_remote_code=True
demo.py文件
Python
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "./"
model_path = model_dir + "models/SenseVoiceSmall"
model = AutoModel(
model=model_path,
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
# device="cuda:0",
hub="hf",
trust_remote_code=True
)
# en
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size_s=60,
merge_vad=True, #
merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)
2.3.4. 配置项目文件
- 使用超级管理员账号,登录智控台 ,在顶部菜单找到
参数管理,找到列表中第一条数据,参数编码是server.secret,复制它到参数值。server.secret需要说明一下,这个参数值很重要,作用是让我们的Server端连接manager-api。server.secret是每次从零部署manager模块时,会自动随机生成的密钥。

- 如果你的
xiaozhi-server目录没有data,你需要创建data目录。 如果你的data下面没有.config.yaml文件,你可以把xiaozhi-server目录下的config_from_api.yaml文件复制到data,并重命名为.config.yaml

- 复制
参数值后,打开xiaozhi-server下的data目录的.config.yaml文件。此刻你的配置文件内容应该是这样的:
Plain
manager-api:
url: http://127.0.0.1:8002/xiaozhi
secret: 你的server.secret值
把你刚才从智控台复制过来的server.secret的参数值复制到.config.yaml文件里的secret里。
类似这样的效果
Plain
manager-api:
url: http://127.0.0.1:8002/xiaozhi
secret: 12345678-xxxx-xxxx-xxxx-123456789000
直接看图:

2.3.5. 运行项目
Python
运行项目
conda activate xiaozhi-esp32-server
python app.py
如下所示表示启动成功咯

2.4. 服务端页面介绍
2.4.1. 智能体管理界面, agent页面
这里会你自己创建的agent配置,刚进去的时候默认为空

2.4.2. 模型配置页面
这里你可以配置一些第三方服务配置, 或者自己的LLM, ASR[语音识别], TTS[语音生成],VAD[语音活动检测]等服务

2.4.2.2. 修改音频的灵敏度 [语音活动检测]
如果你想修改语音检测的阈值则你只需要修改检测阈值这个参数即可
- 阈值越大可以屏蔽更多噪音
- 阈值越小收音就会越敏感


2.4.3. 参数字典管理界面
几个重要参数: server.secret 用于绑定客户端
server.secret:
server.ota:
server.websocket:
close_connection_no_voice_time: 无语音输入断开连接时间(秒) 通常用来设置用户的无状态下的锻炼身体时间
server.auth.enabled: 是否开启认证。默认为True

3. QA
3.1. 如何获取6位有效验证码
Python
import requests
import json
from loguru import logger
from app import get_mac_address
def load_param():
device_id = get_mac_address() # e:7a:00:f1:4a:2b
ota_headers = {
'Device-Id': device_id,
'Content-Type': 'application/json'
}
ota_post_data = {
"flash_size": 16777216,
"minimum_free_heap_size": 8318916,
"mac_address": device_id,
"chip_model_name": "esp32",
"chip_info": {
"model": 9,
"cores": 2,
"revision": 2,
"features": 18
},
"application": {
"name": "xiaozhi",
"version": "1.0.1"
},
"partition_table": [
],
"ota": {
"label": "factory"
},
"board": {
"type": "demo",
"ip": "127.0.0.1",
"mac": device_id
}
}
return device_id, ota_headers, ota_post_data
def get_ota_version(ota_http_url, device_id, ota_headers, ota_post_data):
response = requests.post(ota_http_url, headers=ota_headers, data=json.dumps(ota_post_data))
response_data = response.json()
logger.info(f"device_id....................................{device_id}")
if response_data.get('activation', '') == "":
logger.info(f"6位有效验证码..................................已认证")
else:
valid_code = response_data.get('activation', '').get('code', '123321')
logger.info(f"6位有效验证码.........................................{valid_code}")
return response
# 获取六位有效验证嘛
if __name__ == "__main__":
ota_http_url = "http://127.0.0.1:8002/xiaozhi/ota/"
device_id, ota_headers, ota_post_data = load_param()
response = get_ota_version(ota_http_url, device_id, ota_headers, ota_post_data)
然后配置
Python
配置api_key
2. server.websocket
3. server.ota
4. server.secret
server.websocket: http://172.17.0.7:8013
erver.ota: http://172.17.0.7:8012/xiaozhi/ota/
wscat -c ws://172.17.0.7:8009
wscat -c ws://172.17.0.7:9999/xiaozhi/v1/
http://192.168.31.232:8003/xiaozhi/ota/
这几个参数要配置好即可生成6位有效验证码

3.2. 当你想要修改8001,8002,8003端口
Python
# manager-api 这里的port 修改
application.yml
# vue.config.js 文件、manager-web 修改端口 8001 --> 8011, target 8012
devServer: {
port: 8011, // 指定端口为 8001
proxy: {
'/xiaozhi': {
target: 'http://127.0.0.1:8012',
changeOrigin: true
}
},
client: {
overlay: false, // 不显示 webpack 错误覆盖层
},
},
# server端
manager-api:
# 你的manager-api的地址,最好使用局域网ip
# 如果使用docker部署,请使用填写成 http://xiaozhi-esp32-server-web:8002/xiaozhi
url: http://127.0.0.1:8012/xiaozhi
# 你的manager-api的token,就是刚才复制出来的server.secret
secret: 3faa0964-3f4a-4998-81bc-
3.3. Windows安装Mysql
windows安装mysql:https://blog.csdn.net/qq_45056135/article/details/127201960
彻底卸载mysql: https://blog.csdn.net/m0_52861000/article/details/131354710
找不到msvcr120.dll解决方法: https://learn.microsoft.com/zh-cn/answers/questions/4016279/ps-msvcr120-dll
3.3.1. 卸载
如果是安装失败需要卸载,参考博客2: https://blog.csdn.net/m0_52861000/article/details/131354710
打开注册表: win+R 输入 regedit
主要是注册表需要删除干净
Python
# 注册表1
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
# 注册表2
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQLD Service
3.3.2. 由于找不到mSVCR120.dll, 无法继续执行代码
参考博客2:https://learn.microsoft.com/zh-cn/answers/questions/4016279/ps-msvcr120-dll
3.3.3. initialize specified but the data directory has files in it. Aborting.
已指定初始化但数据目录中存在文件。中止操作。 这个问题是因为mysql下面的data目录下面已经文件(可能是之前安装成功的残留)
D:\software\mysql-5.7.24-winx64\data 把data下面所有的数据删除即可
3.3.4. The service already exists! The current server installed:
参考博客3: https://blog.csdn.net/XIAOGUANG_/article/details/86468993
参考博客4: https://stackoverflow.com/questions/5599141/service-already-exists-when-it-clearly-doesnt
Python
mysqld --initialize-insecure
mysqld -install
可能会出现该问题
- 意思是说mysql已经存在了 通过
mysqld remove进行删除, 然后重新mysqld install
博客2说用
Plain
sc delete service_name
sc delete mysqld
sc delete mysql
这个方法对我来说没用