# 登录问题解决方案 ## 🔴 问题:登录时显示"用户名或密码错误" ## 🚀 快速解决方案 ### 方法1:执行安全修复脚本(推荐) ```bash # 在book项目根目录执行 mysql -u root -p books_db < src/main/resources/db/fix_admin_user_safe.sql ``` 这个脚本会自动检查字段和索引是否存在,不会因为重复执行而报错。 ### 方法2:执行普通修复脚本 ```bash # 在book项目根目录执行 mysql -u root -p books_db < src/main/resources/db/fix_admin_user.sql ``` **注意:** 如果role字段已存在,此脚本可能会报错,可以忽略错误继续执行。 ### 方法3:手动执行SQL(最安全) ```sql -- 1. 连接到MySQL mysql -u root -p books_db -- 2. 检查admin用户是否存在 SELECT id, username, password, role, status FROM users WHERE username = 'admin'; -- 3. 如果admin用户存在但信息不正确,更新它 UPDATE `users` SET `password` = '0192023a7bbd73250516f069df18b500', `role` = 'admin', `status` = 1, `updated_at` = NOW() WHERE `username` = 'admin'; -- 4. 如果admin用户不存在,创建它 INSERT INTO `users` (`username`, `nickname`, `password`, `role`, `status`, `created_at`, `updated_at`) SELECT 'admin', '管理员', '0192023a7bbd73250516f069df18b500', 'admin', 1, NOW(), NOW() WHERE NOT EXISTS (SELECT 1 FROM `users` WHERE `username` = 'admin'); -- 5. 验证 SELECT id, username, password, role, status FROM `users` WHERE `username` = 'admin'; ``` ## 🔍 问题排查 ### 1. 检查管理员账号是否存在 ```sql SELECT id, username, password, role, status FROM users WHERE username = 'admin'; ``` ### 2. 检查账号信息是否正确 管理员账号应该满足: - ✅ `username` = 'admin' - ✅ `password` = '0192023a7bbd73250516f069df18b500' - ✅ `role` = 'admin' - ✅ `status` = 1 ### 3. 检查role字段是否存在 ```sql SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'books_db' AND TABLE_NAME = 'users' AND COLUMN_NAME = 'role'; ``` 如果查询结果为空,说明role字段不存在,需要执行: ```sql ALTER TABLE `users` ADD COLUMN `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户角色:admin-管理员,user-普通用户' AFTER `status`; ``` ## ✅ 验证修复 执行以下SQL验证管理员账号: ```sql SELECT username, password, role, status, CASE WHEN password = '0192023a7bbd73250516f069df18b500' AND role = 'admin' AND status = 1 THEN '✅ 账号信息正确' ELSE '❌ 账号信息不正确' END AS status_check FROM `users` WHERE `username` = 'admin'; ``` ## 🔑 默认管理员账号信息 - **用户名:** admin - **密码:** admin123 - **密码MD5:** 0192023a7bbd73250516f069df18b500 - **角色:** admin - **状态:** 1(激活) ## 🆘 其他可能的问题 ### 问题1:后端服务未启动 **检查方法:** 访问 `http://localhost:8081/api/admin/login` **解决:** ```bash cd book mvn spring-boot:run ``` ### 问题2:数据库连接失败 **检查方法:** 查看后端服务启动日志 **解决:** 检查 `application.properties` 中的数据库配置: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/books_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=root ``` ### 问题3:密码加密问题 **检查方法:** 测试 `PasswordUtil.encrypt("admin123")` 是否返回 `0192023a7bbd73250516f069df18b500` **解决:** 确保数据库中的密码是MD5加密后的值。 ## 📝 完整修复步骤 1. **检查数据库连接** ```bash mysql -u root -p books_db ``` 2. **执行修复脚本** ```bash mysql -u root -p books_db < book/src/main/resources/db/fix_admin_user_safe.sql ``` 3. **验证管理员账号** ```sql SELECT id, username, role, status FROM users WHERE username = 'admin'; ``` 4. **重启后端服务** ```bash cd book mvn spring-boot:run ``` 5. **测试登录** - 访问:`http://localhost:8000/pages/login.html` - 用户名:admin - 密码:admin123 ## 🎯 一键修复(Windows) 双击运行:`book-admin/一键修复登录问题.bat` ## 🎯 一键修复(Mac/Linux) ```bash chmod +x book-admin/一键修复登录问题.sh ./book-admin/一键修复登录问题.sh ```