确保MySQL服务已启动,并且可以连接到数据库。
-- 连接到MySQL
mysql -u root -p books_db
-- 检查admin用户
SELECT id, username, nickname, password, role, status
FROM users
WHERE username = 'admin';
# 在book项目根目录执行
mysql -u root -p books_db < src/main/resources/db/check_admin_user.sql
管理员账号应该满足以下条件:
username = 'admin'password = '0192023a7b'(admin123的MD5值)role = 'admin'status = 1(激活状态)如果管理员账号不存在或信息不正确,执行修复脚本:
# 在book项目根目录执行
mysql -u root -p books_db < src/main/resources/db/fix_admin_user.sql
如果脚本执行失败,可以手动执行SQL:
-- 1. 确保role字段存在
ALTER TABLE `users`
ADD COLUMN `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户角色:admin-管理员,user-普通用户' AFTER `status`;
-- 2. 删除已存在的admin用户(如果存在)
DELETE FROM `users` WHERE `username` = 'admin';
-- 3. 创建新的管理员账号
INSERT INTO `users` (`username`, `nickname`, `password`, `role`, `status`, `created_at`, `updated_at`)
VALUES ('admin', '管理员', '0192023a7bbd73250516f069df18b500', 'admin', 1, NOW(), NOW());
-- 4. 验证管理员账号
SELECT id, username, nickname, password, role, status
FROM `users`
WHERE `username` = 'admin';
现象: 查询结果为空
解决: 执行修复脚本或手动创建管理员账号
现象: 密码字段不是 0192023a7bbd73250516f069df18b500
解决:
UPDATE `users`
SET `password` = '0192023a7bbd73250516f069df18b500'
WHERE `username` = 'admin';
现象: role字段不是 'admin'
解决:
UPDATE `users`
SET `role` = 'admin'
WHERE `username` = 'admin';
现象: status字段不是 1
解决:
UPDATE `users`
SET `status` = 1
WHERE `username` = 'admin';
现象: 执行查询时提示role字段不存在
解决:
ALTER TABLE `users`
ADD COLUMN `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户角色:admin-管理员,user-普通用户' AFTER `status`;
SELECT
id,
username,
password,
CASE
WHEN password = '0192023a7bbd73250516f069df18b500' THEN '密码正确'
ELSE '密码不正确'
END AS password_status,
role,
CASE
WHEN role = 'admin' THEN '角色正确'
ELSE '角色不正确'
END AS role_status,
status,
CASE
WHEN status = 1 THEN '已激活'
ELSE '未激活'
END AS status_text
FROM users
WHERE username = 'admin';
http://localhost:8000/pages/login.htmladminadmin123查看后端服务启动日志,检查是否有错误信息。
确保 application.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
确保 PasswordUtil.verify 方法正常工作。可以测试:
String encrypted = PasswordUtil.encrypt("admin123");
System.out.println(encrypted); // 应该输出:0192023a7bbd73250516f069df18b500
boolean verified = PasswordUtil.verify("admin123", "0192023a7bbd73250516f069df18b500");
System.out.println(verified); // 应该输出:true
使用curl或Postman测试登录接口:
curl -X POST http://localhost:8081/api/admin/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
0192023a7b# 1. 连接到MySQL
mysql -u root -p books_db
# 2. 执行修复SQL(在MySQL中执行)
source book/src/main/resources/db/fix_admin_user.sql
# 或者直接执行:
mysql -u root -p books_db < book/src/main/resources/db/fix_admin_user.sql