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
|
||
```
|