# 数据库创建详细操作步骤 ## 1. MySQL数据库安装 如果还没有安装MySQL,请按照以下步骤安装: ### Windows系统安装MySQL 1. 访问MySQL官方网站下载页面:[MySQL Community Server](https://dev.mysql.com/downloads/mysql/) 2. 选择Windows版本下载安装包(推荐使用MySQL Installer) 3. 运行安装程序,选择"Developer Default"或"Server only"安装类型 4. 按照安装向导提示完成安装,设置root用户密码(请记住这个密码) 5. 确保MySQL服务设置为自动启动 ### 验证MySQL安装 打开命令提示符(CMD)或PowerShell,输入以下命令验证MySQL是否正确安装: ```bash mysql --version ``` 如果安装成功,会显示MySQL的版本信息。 ## 2. 启动MySQL服务 ### Windows系统 1. 按下Win + R,输入`services.msc`打开服务管理器 2. 找到"MySQL80"服务(或类似名称) 3. 确保服务状态为"正在运行",如果未运行,右键点击选择"启动" ## 3. 连接到MySQL服务器 ### 使用命令行连接 打开命令提示符(CMD)或PowerShell,输入以下命令连接到MySQL: ```bash mysql -u root -p ``` 系统会提示输入密码,输入您在安装MySQL时设置的root密码。 ### 使用MySQL Workbench连接(可选) 如果您安装了MySQL Workbench,可以通过图形界面连接: 1. 打开MySQL Workbench 2. 点击左侧的"Local instance MySQL80"连接 3. 输入密码并连接 ## 4. 创建数据库 连接成功后,执行以下SQL命令创建数据库: ```sql CREATE DATABASE secondhandmarket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 执行成功后,您会看到类似以下输出: ``` Query OK, 1 row affected (0.02 sec) ``` ## 5. 选择数据库 执行以下命令选择刚创建的数据库: ```sql USE secondhandmarket; ``` 输出: ``` Database changed ``` ## 6. 创建表结构 执行以下SQL语句创建所需的表结构: ### 创建users表 ```sql CREATE TABLE users ( id BIGINT AUTO_INCREMENT PRIMARY KEY, phone VARCHAR(20) NOT NULL UNIQUE, password VARCHAR(100) NOT NULL, nickname VARCHAR(50), avatar VARCHAR(255), gender VARCHAR(10), bio VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_login TIMESTAMP, status VARCHAR(20) DEFAULT 'ACTIVE' ); ``` ### 创建items表 ```sql CREATE TABLE items ( id BIGINT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, description TEXT, price DECIMAL(10, 2) NOT NULL, category VARCHAR(50) NOT NULL, status VARCHAR(20) DEFAULT 'AVAILABLE', images TEXT, seller_id BIGINT NOT NULL, view_count INT DEFAULT 0, like_count INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (seller_id) REFERENCES users(id) ); ``` ### 创建chat_messages表 ```sql CREATE TABLE chat_messages ( id BIGINT AUTO_INCREMENT PRIMARY KEY, sender_id BIGINT NOT NULL, receiver_id BIGINT NOT NULL, item_id BIGINT NOT NULL, content TEXT NOT NULL, is_read BOOLEAN DEFAULT FALSE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (sender_id) REFERENCES users(id), FOREIGN KEY (receiver_id) REFERENCES users(id), FOREIGN KEY (item_id) REFERENCES items(id) ); ``` ## 7. 创建索引(提高查询性能) 为常用查询字段创建索引: ```sql -- 为users表的phone字段创建索引 CREATE INDEX idx_users_phone ON users(phone); -- 为items表的常用查询字段创建索引 CREATE INDEX idx_items_seller_id ON items(seller_id); CREATE INDEX idx_items_category ON items(category); CREATE INDEX idx_items_status ON items(status); CREATE INDEX idx_items_price ON items(price); -- 为chat_messages表的查询字段创建索引 CREATE INDEX idx_chat_messages_sender_receiver ON chat_messages(sender_id, receiver_id); CREATE INDEX idx_chat_messages_receiver_id ON chat_messages(receiver_id); CREATE INDEX idx_chat_messages_item_id ON chat_messages(item_id); ``` ## 8. 验证表结构 执行以下命令查看创建的表: ```sql SHOW TABLES; ``` 输出应该包括: ``` +---------------------------+ | Tables_in_secondhandmarket | +---------------------------+ | chat_messages | | items | | users | +---------------------------+ ``` ## 9. 配置应用程序连接 确保`application.properties`文件中的数据库配置正确: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/secondhandmarket?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=061723 # 这是您设置的MySQL密码 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # JPA配置 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect ``` ## 10. 测试连接 当您启动Spring Boot应用程序时,它应该能够成功连接到MySQL数据库。如果连接失败,请检查以下几点: 1. MySQL服务是否正在运行 2. 数据库名称是否正确 3. 用户名和密码是否正确 4. 防火墙是否允许连接 5. MySQL是否允许root用户从localhost连接 ## 11. 注意事项 1. 在生产环境中,不建议使用root用户,应该创建一个具有适当权限的新用户 2. 确保数据库密码安全,不要硬编码在应用程序中 3. 定期备份数据库 4. 考虑使用连接池来优化数据库连接管理 ## 故障排除 如果遇到连接问题,请尝试以下命令检查MySQL用户权限: ```sql SELECT user, host FROM mysql.user; GRANT ALL PRIVILEGES ON secondhandmarket.* TO 'root'@'localhost'; FLUSH PRIVILEGES; ```