登录问题解决方案.md 4.4 KB

登录问题解决方案

🔴 问题:登录时显示"用户名或密码错误"

🚀 快速解决方案

方法1:执行安全修复脚本(推荐)

# 在book项目根目录执行
mysql -u root -p books_db < src/main/resources/db/fix_admin_user_safe.sql

这个脚本会自动检查字段和索引是否存在,不会因为重复执行而报错。

方法2:执行普通修复脚本

# 在book项目根目录执行
mysql -u root -p books_db < src/main/resources/db/fix_admin_user.sql

注意: 如果role字段已存在,此脚本可能会报错,可以忽略错误继续执行。

方法3:手动执行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. 检查管理员账号是否存在

SELECT id, username, password, role, status 
FROM users 
WHERE username = 'admin';

2. 检查账号信息是否正确

管理员账号应该满足:

  • username = 'admin'
  • password = '0192023a7b'
  • role = 'admin'
  • status = 1

3. 检查role字段是否存在

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'books_db' 
  AND TABLE_NAME = 'users' 
  AND COLUMN_NAME = 'role';

如果查询结果为空,说明role字段不存在,需要执行:

ALTER TABLE `users` 
ADD COLUMN `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户角色:admin-管理员,user-普通用户' AFTER `status`;

✅ 验证修复

执行以下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: 0192023a7b
  • 角色: admin
  • 状态: 1(激活)

🆘 其他可能的问题

问题1:后端服务未启动

检查方法: 访问 http://localhost:8081/api/admin/login

解决:

cd book
mvn spring-boot:run

问题2:数据库连接失败

检查方法: 查看后端服务启动日志

解决: 检查 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

问题3:密码加密问题

检查方法: 测试 PasswordUtil.encrypt("admin123") 是否返回 0192023a7bbd73250516f069df18b500

解决: 确保数据库中的密码是MD5加密后的值。

📝 完整修复步骤

  1. 检查数据库连接

    mysql -u root -p books_db
    
  2. 执行修复脚本

    mysql -u root -p books_db < book/src/main/resources/db/fix_admin_user_safe.sql
    
  3. 验证管理员账号

    SELECT id, username, role, status FROM users WHERE username = 'admin';
    
  4. 重启后端服务

    cd book
    mvn spring-boot:run
    
  5. 测试登录

    • 访问:http://localhost:8000/pages/login.html
    • 用户名:admin
    • 密码:admin123

🎯 一键修复(Windows)

双击运行:book-admin/一键修复登录问题.bat

🎯 一键修复(Mac/Linux)

chmod +x book-admin/一键修复登录问题.sh
./book-admin/一键修复登录问题.sh