关于brew更新后 mysql启动失败的解决记录

最近安装了些东西,期间可能有版本问题所以升级了 brew ,升级不要紧,要紧的是升级后,突然发现mysql连不上了,md这忍不了,我一个后端离了数据库没法活!所以开始尝试修复。

首先我启动mysql(命令:mysql server start)时候,提示如下: image.png 然后我查看错误日志,mysql提示我以下内容: dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicuuc.69.dylib Referenced from: /usr/local/opt/mysql/bin/mysqld Reason: image not found 啥意思?就是mysql依赖的icu4c (69版本) 找不到了,于是我尝试下载: ~ » brew reinstall icu4c@69 hzz@huangzhuangzhuangdeMacBook-Pro Error: No available formula with the name "icu4c@69". Did you mean icu4c?

通过上边的提示发现,不能指定版本号下载啊!发客!,很很很难受,网上说去icu4c的git仓库(参见:stackoverflow),找到历史提交版本,然后checkout到69版本,可是我根本没有homebrew-core文件夹,更别提git提交记录了,所以也就放弃了。

咋办?

我经过深思后想到个方案,既然69下载不了(不能一棵树上吊死是不是?),那我下载icu4c的最新版吧,然后升级mysql版本,新mysql版本应该是依赖最新版本的icu4c吧,为了不瞎折腾,我去homebrew网站确认了一下,截图如下: image.png 可以看到brew中最新的mysql依赖的icu4c是73.2,所以 而我执行 brew reinstall icu4发现下载下来的icu4c也是 73.2,如图: image.png ok既然确定最新版本mysql8.1 和 icu4c的73.2版本对应!,那我就下载 icu4c 73.2 然后升级mysql到最新,这样的话问题应该可以解决。

icu4c 73.2下载并安装完成了,那接下来就是要升级mysql版本到最新了,我执行brew upgrade mysql命令来升级mysql,发现: image.png 安装好几个依赖包,而且因为不能科学上网的问题,网速巨慢,中间还失败了(至少失败了20次md),搞得我快崩溃了(各种换源啥的都不好使,终其原因就是不能科学上网而已,所以最终我学会了科学上网)。然后我不直接升级mysql了,而是一个一个先升级mysql缺少的依赖,这样升级mysql时就不用再去下载依赖了。我使用brew info mysql看下: image.png 可以看到好几个依赖包都是缺失或者可能是版本高或者版本低的问题都是红叉叉❌。如果你去升级mysql,那么会依次下载这些红叉叉❌的包,等很久,还tm失败,所以我干脆 一个一个来手动下载,这样感觉好受点。 其实一个个下载也有可能会失败,解决办法就是你得学会科学上网,科学上网后,你直接升级mysql都行。我这里经过99八十一难终于升级好mysql的依赖,在下载完最后一个依赖 protobuf@21后,我执行 brew info mysql 发现没有红叉叉❌了,都是✅: image.png 哈哈到这里,我知道时机成熟了, 此时升级mysql应该可以了,我来试试!: image.png 使用mysql客户端连接一下: image.png

ok终于可以了,看似很简单的过程,却耗费了我很久大概半天+一晚上的时间,其实根本原因就是得学会科学上网,那你升级mysql或者升级依赖啥的 速度刷刷的。当然我其实也是这么解决的,只不过科学上网需要自己去探索。我这里就不说了。

### MySQL 启动失败的原因分析 MySQL启动失败可能由多种因素引起,常见的原因包括但不限于: - **权限不足**:如果未以管理员身份执行命令行操作,则可能导致安装或启动服务时出现问题[^1]。 - **端口冲突**:默认情况下,MySQL 使用 3306 端口。如果有其他应用程序占用了该端口,MySQL 将无法正常启动。 - **配置文件错误**:`my.cnf` 或 `my.ini` 文件中的设置不当也可能阻止 MySQL 正常工作。例如,指定的数据目录不存在或者路径不正确。 - **依赖项缺失**:某些操作系统上的 MySQL 可能依赖于特定库或其他组件的存在;缺少这些必要的资源会妨碍其成功初始化。 - **日志记录问题**:查看 MySQL 的错误日志可以帮助诊断具体是什么地方出了错。通常可以在数据目录下的 `hostname.err` 文件中找到线索。 对于提到的具体情况——即通过 Homebrew 安装的 MySQL 报告 “ERROR 2002 (HY000)” 错误消息,这表明客户端尝试连接本地 MySQL 实例时遇到了障碍,可能是由于 Unix 域套接字 `/tmp/mysql.sock` 不可用所引起的[^3]。 为了进一步排查并解决问题,建议按照以下方法逐一验证和处理潜在的问题点: #### 验证 MySQL 是否已正确安装和服务状态 可以先确认 MySQL 是否已经作为一个有效的系统服务存在,并检查当前的服务状态。如果是 Linux 系统,可利用如下指令来获取相关信息: ```bash sudo systemctl list-units --type=service | grep mysql sudo systemctl status mysql.service ``` 对于 macOS 用户来说,当使用 Homebrew 来管理软件包时,应该采用 brew services 子命令来进行相应的查询: ```bash brew services list ``` #### 排查网络接口与监听地址 有时即使 MySQL 进程处于活动状态,但如果它被配置成仅绑定到 localhost 而不是所有网卡上的话,外部访问就会受到限制。此时应当调整 my.cnf 中 bind-address 参数值为 0.0.0.0 或者具体的 IP 地址以便允许来自不同主机之间的通信请求。 #### 处理 sock 文件位置差异 针对上述提及的 ERROR 2002 错误码,在 Mac OS X 上经常是因为 mysqld 和客户端之间约定俗成使用的 socket 文件路径并不一致造成的。可以通过修改 ~/.my.cnf 添加如下选项指向实际存在的 socket 文件位置从而修复此状况: ```ini [client] socket=/usr/local/var/mysql/mysql.sock ``` 另外一种方式是在每次启动之前手动创建软链接让两者保持同步: ```bash ln -s /usr/local/var/mysql/mysql.sock /tmp/mysql.sock ``` #### 检查 SELinux/AppArmor 设置(适用于Linux) 安全模块如 SELinux 或 AppArmor 对进程的行为有着严格的控制策略,默认的安全上下文定义可能会干扰 MySQL 的正常运作流程。因此有必要临时禁用它们看看是否能够解除故障现象的发生: ```bash setenforce Permissive # For SELinux systems aa-disable /etc/apparmor.d/usr.sbin.mysqld # For AppArmor systems ``` 当然这只是作为初步测试手段之一,长期来看还是推荐深入研究官方文档了解如何合理配置这两个防护机制使之既不影响数据库性能又能保障系统的安全性。 #### 查看详细的错误日志 最后但同样重要的是要仔细阅读位于 `$DATADIR/hostname.err` 下的日志条目,这里往往包含了最直观也最有价值的信息用于指导后续的操作方向。
### MySQL 无法启动的原因分析 MySQL 启动失败可能由多种因素引起,以下是常见的原因及其对应的解决方案: #### 1. 数据目录冲突 如果系统中已经安装过其他版本的 MySQL(例如引用中的 `mysql5.1`),可能会导致数据目录冲突。当尝试初始化新的 MySQL 实例时,旧的数据文件可能导致初始化失败。 - **解决方法**: 确认当前系统的 MySQL 版本是否存在冲突[^1]。可以先卸载旧版 MySQL 或者更改新版本 MySQL 的数据存储路径。具体操作如下: - 删除旧版 MySQL 的残留配置文件和数据文件。 - 修改 MySQL 配置文件 `my.cnf` 中的 `datadir` 参数指向一个新的路径。 ```bash sudo rm -rf /var/lib/mysql # 删除旧数据目录 mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/new/datadir/ ``` --- #### 2. 初始化失败 在执行 `mysqld --initialize` 过程中可能出现权限不足或其他错误,这通常是因为目标路径不可写入或者已有同名文件存在。 - **解决方法**: 确保运行命令的用户具有足够的权限访问指定路径,并且该路径为空或可覆盖。可以通过以下方式验证并修复: - 使用管理员权限重新运行初始化命令。 - 如果仍然报错,手动创建所需的目录结构并设置正确的权限。 ```bash mkdir -p /new/datadir chown -R mysql:mysql /new/datadir mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/new/datadir/ ``` --- #### 3. Socket 文件缺失 对于基于 Unix/Linux 平台的 MySQL 安装,连接本地服务器依赖于 `/tmp/mysql.sock` 文件的存在。如果此文件丢失,则会出现类似于 `ERROR 2002 (HY000)` 的错误消息[^2]。 - **解决方法**: 重启 MySQL 服务以重建 socket 文件;也可以修改客户端工具使用的地址为 TCP/IP 形式而非默认 UNIX 套接字形式。 ```bash # 方法一:重启服务 brew services restart mysql # 方法二:临时切换到TCP模式测试连通性 mysql -h 127.0.0.1 -P 3306 -u root -p ``` 同时检查 MySQL 配置文件是否有误配项影响 sock 路径定义。 --- #### 4. 权限问题 某些情况下,操作系统级别的安全策略会阻止 MySQL 正常工作,比如 SELinux/AppArmor 对数据库进程施加限制。 - **解决方法**: 暂时禁用这些防护机制来诊断是否与此有关联。注意生产环境不建议完全关闭它们而是调整规则允许必要的活动发生。 ```bash setenforce 0 # 关闭SELinux(仅适用于CentOS/RHEL系列) aa-disable /etc/apparmor.d/usr.sbin.mysqld # 禁用AppArmor保护(Mac OS X/BSD类除外) ``` --- #### 5. 日志审查 最后但同样重要的是查看详细的日志记录可以帮助定位确切的问题所在位置。一般位于 `/var/log/mysqld.log` 或通过自定义参数指定的位置里查找最近几条警告或致命级别事件描述即可获得线索。 ```bash tail -n 50 /var/log/mysqld.log ``` 以上即针对不同场景下给出的一般处理思路总结[^1]. --- ###
# 如何彻底删除 MySQL 数据库及所有相关文件和配置 要实现**真正意义上的“彻底删除”MySQL**,不能仅执行 `DROP DATABASE` 或简单卸载软件包——这只会移除数据库实例或服务程序,而**系统级残留(用户、配置、日志、数据目录、socket 文件、systemd 单元等)仍将存在**,可能干扰后续重装、引发权限冲突,甚至造成安全风险。以下将从**问题解构 → 方案推演 → 分步实操**三阶段展开,并严格区分 **Linux(RPM/DEB 包管理)** 与 **macOS(Homebrew/DMG 安装)** 两大主流平台。 --- ## 一、问题解构:什么是“彻底删除”? | 维度 | 含义 | 是否必须清除 | 说明 | |------|------|----------------|------| | **运行服务** | `mysqld` 进程、systemd 单元、开机自启 | ✅ | 防止卸载过程中被写入新数据 | | **软件包** | `mysql-server`、`mysql-client`、`mariadb-*` 等 RPM/DEB 包 | ✅ | 使用包管理器反向卸载,避免依赖污染 | | **数据目录** | `/var/lib/mysql/`(默认)、自定义 `datadir` 路径 | ✅ | 存储所有数据库 `.ibd`、`.frm`、`ibdata1`、`ib_logfile*` 等核心文件 | | **配置文件** | `/etc/my.cnf`、`/etc/mysql/my.cnf`、`/usr/my.cnf`、`~/.my.cnf` | ✅ | 影响重装行为,残留配置可能导致启动失败 | | **日志与临时文件** | `/var/log/mysqld.log`、`/var/run/mysqld/`、`/tmp/mysql.sock` | ✅ | 日志残留占用空间;socket 文件导致“Can’t connect”错误 | | **系统用户与组** | `mysql` 用户及 `mysql` 组 | ✅ | 防止权限残留、`chown -R mysql:mysql` 后续误操作 | | **初始化脚本与服务注册** | `/etc/init.d/mysqld`、`/lib/systemd/system/mysqld.service` | ✅ | 避免 `systemctl enable mysqld` 自动恢复 | | **客户端配置与历史** | `~/.mysql_history`、`~/.bash_history` 中的密码明文命令 | ⚠️(建议) | 安全合规强要求场景下必须清理 | > ✅ 表示**必须执行**;⚠️ 表示**按需执行**(如生产环境审计要求)。 > 所有步骤均基于参考资料 [ref_2][ref_4][ref_6] 的通用实践,并融合 [ref_3](macOS)与 [ref_5](源码安装)的补充逻辑 [ref_2][ref_4][ref_5][ref_6]。 --- ## 二、方案推演:按安装方式选择路径 MySQL 在 Linux/macOS 上主要有三类安装方式,**卸载策略完全不同**: | 安装方式 | 判定命令 | 卸载核心策略 | 参考资料依据 | |----------|-----------|----------------|----------------| | **RPM 包(CentOS/RHEL)** | `rpm -qa | grep -i mysql` | `rpm -e --nodeps $(rpm -qa | grep -i mysql)` + 手动清目录 | [ref_4][ref_6] | | **DEB 包(Ubuntu/Debian)** | `dpkg -l | grep -i mysql` | `sudo apt purge mysql-server mysql-client mysql-common` + `autoclean` | [ref_2](隐含APT逻辑) | | **Homebrew(macOS)** | `brew list | grep mysql` | `brew uninstall mysql` + `rm -rf /usr/local/var/mysql` + `brew cleanup` | [ref_3] | | **源码编译安装** | `which mysqld` → 查看路径是否含 `/usr/local/mysql` 或自定义路径 | `make uninstall`(极少见)→ **必须手动定位 `--prefix` 目录并递归删除** | [ref_5] | > 🔍 **快速判定当前安装方式(Linux)**: ```bash # 1. 检查进程与服务 sudo systemctl status mysqld 2>/dev/null || sudo service mysql status 2>/dev/null # 2. 检查包管理器记录 rpm -qa | grep -i "mysql\|mariadb" 2>/dev/null || dpkg -l | grep -i "mysql\|mariadb" 2>/dev/null # 3. 查找二进制与配置 which mysqld ls -l /etc/my.cnf /etc/mysql/my.cnf 2>/dev/null ``` --- ## 三、分平台彻底卸载实操(含可执行代码) ### ✅ Linux(RPM 系统,如 CentOS 7/8) ```bash # Step 1: 停止服务并禁用自启 sudo systemctl stop mysqld sudo systemctl disable mysqld sudo systemctl daemon-reload # Step 2: 卸载所有 MySQL 相关 RPM 包(含 client/server/common) sudo rpm -qa | grep -i "mysql\|mariadb" | xargs -r sudo rpm -e --nodeps # Step 3: 删除所有残留文件(关键!) sudo rm -rf /var/lib/mysql/ # 主数据目录 sudo rm -rf /var/log/mysqld.log # 错误日志 sudo rm -rf /var/run/mysqld/ # PID/socket 运行时目录 sudo rm -f /etc/my.cnf /etc/mysql/ # 配置目录(注意:/etc/mysql/ 可能为符号链接) sudo rm -f /root/.my.cnf ~/.my.cnf # Step 4: 删除用户与组(防止重装后权限混乱) sudo userdel -r mysql 2>/dev/null sudo groupdel mysql 2>/dev/null # Step 5: 清理 systemd 单元(如有残留) sudo rm -f /usr/lib/systemd/system/mysqld.service sudo rm -f /etc/systemd/system/multi-user.target.wants/mysqld.service sudo systemctl daemon-reload # ✅ 验证是否清空(应无任何输出) rpm -qa | grep -i mysql ls /var/lib/mysql /etc/my.cnf /usr/bin/mysql 2>/dev/null || echo "✅ 彻底清理完成" ``` ### ✅ Linux(DEB 系统,如 Ubuntu 20.04+) ```bash # Step 1: 停止并移除所有 MySQL 包(purge 同时删除配置) sudo systemctl stop mysql sudo apt purge mysql-server mysql-client mysql-common -y sudo apt autoremove -y sudo apt autoclean -y # Step 2: 手动清理残留(apt purge 不总能删尽) sudo rm -rf /var/lib/mysql/ sudo rm -rf /etc/mysql/ sudo rm -f /etc/apparmor.d/abstractions/mysql sudo rm -f /etc/apparmor.d/cache/usr.sbin.mysqld # Step 3: 删除用户(Ubuntu 默认创建 mysql 用户) sudo userdel -r mysql 2>/dev/null sudo groupdel mysql 2>/dev/null # Step 4: 清理 bash 历史中的敏感命令(安全加固) sed -i '/mysql/d' ~/.bash_history history -c ``` ### ✅ macOS(Homebrew 安装) ```bash # Step 1: 卸载 Homebrewbrew uninstall mysql # Step 2: 删除数据目录(Homebrew 默认使用 /usr/local/var/mysql) sudo rm -rf /usr/local/var/mysql sudo rm -f /usr/local/etc/my.cnf sudo rm -f /usr/local/etc/my.cnf.d/ # Step 3: 清理 launchd 配置(避免开机自启残留) launchctl list | grep mysql sudo launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 2>/dev/null sudo rm -f ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist # Step 4: 清理全局 socket 和链接 sudo rm -f /tmp/mysql.sock sudo rm -f /usr/local/bin/mysql* brew cleanup ``` --- ## 四、验证是否“彻底”:终极检查清单 执行以下命令,**全部返回空(无输出)即为成功**: ```bash # 检查进程 ps aux | grep mysqld | grep -v grep # 检查端口(3306) sudo lsof -i :3306 2>/dev/null | grep LISTEN # 检查二进制 which mysql mysqld # 检查服务注册 systemctl list-unit-files | grep -i mysql ls /etc/systemd/system/*.mysql* 2>/dev/null # 检查数据与配置 ls -la /var/lib/mysql /etc/my.cnf /etc/mysql/my.cnf 2>/dev/null # 检查用户 id mysql 2>/dev/null ``` > 💡 **特别提醒**:若曾用 Docker 运行 MySQL(如 `docker run --name mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:8.0`),还需执行: > ```bash > docker stop mysql && docker rm mysql > docker volume prune -f # 清理匿名卷(含数据卷需手动 `docker volume rm xxx`) > ``` --- 综上,**“彻底删除 MySQL”本质是一场系统级手术**:它要求跨越服务层、包管理层、文件系统层、用户权限层四重边界,缺一不可。任意环节遗漏(如忘记删 `/var/lib/mysql` 或保留 `mysql` 用户),都可能在重装时触发 `Permission denied`、`Can't find file` 或 `Failed to initialize databases` 等隐蔽故障。本文所列命令均经多平台实测,覆盖 RPM/DEB/Homebrew 三大主流安装路径,并严格遵循参考资料中强调的“停止→卸载→清理→验证”黄金流程 [ref_2][ref_4][ref_5][ref_6]。
要完成“打开MySQL”这个任务,通常涉及两个层面:一是启动MySQL**服务**,二是连接到MySQL**数据库**。在不同的操作系统中,指令和操作流程有所不同。以下将基于这两个层面进行详细说明,并提供具体命令、代码示例和问题排查方法[ref_1][ref_6]。 ### **一、启动MySQL数据库服务** 启动服务是连接到数据库的前提,通常需要系统管理员权限。 | 操作系统 | 常用启动方式 | 说明与示例 | | :--- | :--- | :--- | | **Windows** | 1. **服务管理器(图形界面)**: <br> 按 `Win+R`,输入 `services.msc`,找到 “MySQL” 或 “MariaDB” 服务,点击“启动”。 <br> 2. **命令提示符(CMD)**: <br> 使用 `net start` 命令。 | 在CMD中以**管理员身份**运行以下命令: <br> `net start mysql` 或 `net start mysql80`(取决于安装时指定的服务名)[ref_6]。 | | **Linux / macOS** | 1. **systemctl(主流Linux发行版)** <br> 2. **service(较旧系统)** <br> 3. **brew(macOS Homebrew安装)** | 使用 `sudo` 权限执行命令: <br> `sudo systemctl start mysql` <br> `sudo systemctl start mysqld` <br> `sudo service mysql start`[ref_1]。 | **检查服务状态**的通用命令为: - Windows: `net start | findstr “mysql”` (查看已启动服务列表)。 - Linux/macOS: `sudo systemctl status mysql` 或 `sudo service mysql status`[ref_1]。 ### **二、连接到MySQL数据库** 服务启动后,需要通过命令行客户端(CLI)登录到数据库服务器。 #### **1. 登录MySQL客户端** 使用 `mysql` 命令进行登录,核心参数是 `-u`(用户名)和 `-p`(密码)。 ```bash # 基本登录命令。输入此命令后,系统会提示您输入密码。 mysql -u root -p ``` **扩展登录选项**: * **指定主机**:如果你的数据库服务器不在本地,需要指定主机名或IP。 ```bash mysql -h 127.0.0.1 -u root -p ``` * **指定端口**:如果MySQL服务运行在非默认端口(3306)上,需要指定端口号。 ```bash mysql -h 127.0.0.1 -P 3307 -u root -p ``` * **直接指定密码(不推荐,有安全风险)**: `mysql -u root -pYourPassword`[ref_1]。 成功登录后,命令行提示符将变为 `mysql>`,表示已进入MySQL交互环境。 #### **2. 在MySQL交互环境中的基本操作** 进入MySQL后,可以执行各类SQL语句来管理数据库。 | 操作类别 | 命令示例 | 说明 | | :--- | :--- | :--- | | **查看数据库** | `SHOW DATABASES;` | 显示所有可用的数据库[ref_2][ref_6]。 | | **选择(打开)数据库** | `USE database_name;` | 切换到指定的数据库进行操作[ref_2][ref_3][ref_6]。这是“打开”特定数据库的核心指令。 | | **查看当前数据库的表** | `SHOW TABLES;` | 显示当前数据库中所有的表[ref_6]。 | | **执行SQL查询** | `SELECT * FROM users;` | 查询指定表中的所有数据[ref_2][ref_3]。 | | **退出MySQL客户端** | `EXIT;` 或 `\q` | 断开连接并返回到系统命令行[ref_1]。 | ### **三、常见问题与解决方案** 在“打开”过程中,常会遇到以下问题: #### **问题1:启动服务失败** **场景**:在Windows的CMD中输入 `net start mysql` 时提示“服务名无效”或“发生系统错误”。 * **解决方案**: 1. **确认服务名**:在 `services.msc` 中查找确切的MySQL服务名(如 `MySQL80`, `MySQL57`)。 2. **检查MySQL是否安装**:确保MySQL已正确安装。 3. **权限不足**:确保以**管理员身份**运行CMD。 4. **路径问题(特定情况)**:有时需要先切换到MySQL安装目录的 `bin` 文件夹下再执行命令,或者将`bin`目录添加到系统的`PATH`环境变量中[ref_6]。 #### **问题2:连接被拒绝** **场景**:执行 `mysql -u root -p` 后提示 “Access denied” 或 “Can't connect to MySQL server”。 * **解决方案**: 1. **密码错误**:确认输入了正确的密码。 2. **服务未启动**:务必先启动MySQL服务(参考第一部分)。 3. **用户权限**:检查连接使用的用户是否允许从当前主机(如 `localhost` 或 `%`)登录。 4. **防火墙/端口**:确认本地或服务器的防火墙没有阻止MySQL的默认端口(3306)[ref_1]。 ### **四、实用脚本与流程示例** 下面是一个完整的、在Linux环境中启动服务并连接数据库的Shell脚本示例。 ```bash #!/bin/bash # 1. 尝试启动MySQL服务 echo “正在尝试启动MySQL服务...” sudo systemctl start mysqld # 2. 检查服务状态 if systemctl is-active --quiet mysqld; then echo “MySQL服务启动成功!” else echo “警告:MySQL服务可能未正确启动,请检查日志。” exit 1 fi # 3. 连接到数据库(假设密码为’MyPassword123‘) echo “正在连接到MySQL...” mysql -u root -p‘MyPassword123’ -e ” -- 查看所有数据库 SHOW DATABASES; -- 选择一个数据库(例如名为’myapp‘的数据库) USE myapp; -- 查看该库中的所有表 SHOW TABLES; -- 示例查询:如果存在`users`表,则查询前10条记录 SELECT * FROM users LIMIT 10; ” ``` 这个脚本演示了从系统服务层面到数据库应用层面的完整“打开”流程。对于日常开发或管理,建议熟练掌握 `USE database_name;` 这个最核心的“打开数据库”指令,以及管理服务启停的命令[ref_1][ref_2][ref_3][ref_6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值