99 lines
2.2 KiB
Markdown
99 lines
2.2 KiB
Markdown
|
|
# 数据库连接问题排查和解决
|
|||
|
|
|
|||
|
|
## 错误信息
|
|||
|
|
```
|
|||
|
|
java.sql.SQLException: Access denied for user 'root'@'172.20.0.1' (using password: YES)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 问题原因
|
|||
|
|
1. 数据库 `chat_gpt_yj` 不存在
|
|||
|
|
2. MySQL root 密码不正确
|
|||
|
|
3. 用户权限问题
|
|||
|
|
|
|||
|
|
## 解决步骤
|
|||
|
|
|
|||
|
|
### 方法1:使用初始化脚本(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /home/gc/gangyan/chat_web_backend
|
|||
|
|
./init_database.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
脚本会自动:
|
|||
|
|
- 测试MySQL连接
|
|||
|
|
- 创建数据库 `chat_gpt_yj`
|
|||
|
|
- 导入所有SQL初始化脚本
|
|||
|
|
|
|||
|
|
### 方法2:手动操作
|
|||
|
|
|
|||
|
|
#### 步骤1:安装MySQL客户端(如果没有)
|
|||
|
|
```bash
|
|||
|
|
sudo apt install mysql-client-core-8.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 步骤2:连接MySQL并创建数据库
|
|||
|
|
```bash
|
|||
|
|
# 连接MySQL(根据实际情况修改密码)
|
|||
|
|
mysql -uroot -p
|
|||
|
|
|
|||
|
|
# 在MySQL中执行:
|
|||
|
|
CREATE DATABASE IF NOT EXISTS `chat_gpt_yj` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
|||
|
|
USE chat_gpt_yj;
|
|||
|
|
|
|||
|
|
# 然后导入SQL文件(按顺序)
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/sys.sql;
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/chat_gpt.sql;
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/knowledge_base.sql;
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/gpt_folder.sql;
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/writter_docs.sql;
|
|||
|
|
SOURCE /home/gc/gangyan/chat_web_backend/doc/sql/quartz.sql;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 步骤3:检查数据库配置
|
|||
|
|
|
|||
|
|
编辑 `src/main/resources/application-yj.yml`,确认:
|
|||
|
|
```yaml
|
|||
|
|
spring:
|
|||
|
|
datasource:
|
|||
|
|
url: jdbc:mysql://localhost:3306/chat_gpt_yj?...
|
|||
|
|
username: root
|
|||
|
|
password: 1234567890 # 确认密码正确
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方法3:如果密码不对,重置MySQL密码
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 停止MySQL
|
|||
|
|
sudo systemctl stop mysql
|
|||
|
|
|
|||
|
|
# 以安全模式启动MySQL(跳过权限检查)
|
|||
|
|
sudo mysqld_safe --skip-grant-tables &
|
|||
|
|
|
|||
|
|
# 连接MySQL
|
|||
|
|
mysql -uroot
|
|||
|
|
|
|||
|
|
# 在MySQL中执行:
|
|||
|
|
USE mysql;
|
|||
|
|
UPDATE user SET authentication_string=PASSWORD('1234567890') WHERE User='root';
|
|||
|
|
FLUSH PRIVILEGES;
|
|||
|
|
EXIT;
|
|||
|
|
|
|||
|
|
# 重启MySQL
|
|||
|
|
sudo systemctl restart mysql
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 验证数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
mysql -uroot -p1234567890 -e "SHOW DATABASES;" | grep chat_gpt_yj
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果看到 `chat_gpt_yj`,说明数据库创建成功。
|
|||
|
|
|
|||
|
|
## 重新启动应用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /home/gc/gangyan/chat_web_backend
|
|||
|
|
java -jar target/chat_web_yj.jar --spring.profiles.active=yj
|
|||
|
|
```
|