104 lines
2.2 KiB
Markdown
104 lines
2.2 KiB
Markdown
# 修复数据库密码问题
|
||
|
||
## 当前错误
|
||
```
|
||
Access denied for user 'root'@'172.20.0.1' (using password: YES)
|
||
```
|
||
|
||
## 问题
|
||
配置文件中的MySQL密码 `1234567890` 不正确。
|
||
|
||
## 解决方案
|
||
|
||
### 方案1:修改配置文件中的密码(如果知道正确密码)
|
||
|
||
编辑 `src/main/resources/application-yj.yml`:
|
||
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
password: 你的正确密码 # 修改这里
|
||
```
|
||
|
||
然后重新编译:
|
||
```bash
|
||
cd /home/gc/gangyan/chat_web_backend
|
||
./compile.sh
|
||
```
|
||
|
||
### 方案2:重置MySQL root密码
|
||
|
||
#### 步骤1:停止MySQL服务
|
||
```bash
|
||
sudo systemctl stop mysql
|
||
# 或者
|
||
sudo service mysql stop
|
||
```
|
||
|
||
#### 步骤2:以安全模式启动MySQL
|
||
```bash
|
||
sudo mysqld_safe --skip-grant-tables --skip-networking &
|
||
```
|
||
|
||
#### 步骤3:无密码连接MySQL
|
||
```bash
|
||
mysql -uroot
|
||
```
|
||
|
||
#### 步骤4:重置密码
|
||
```sql
|
||
USE mysql;
|
||
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234567890';
|
||
FLUSH PRIVILEGES;
|
||
EXIT;
|
||
```
|
||
|
||
#### 步骤5:重启MySQL
|
||
```bash
|
||
sudo pkill mysqld
|
||
sudo systemctl start mysql
|
||
```
|
||
|
||
#### 步骤6:创建数据库
|
||
```bash
|
||
mysql -uroot -p1234567890 -e "CREATE DATABASE IF NOT EXISTS \`chat_gpt_yj\` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
|
||
```
|
||
|
||
#### 步骤7:导入SQL脚本
|
||
```bash
|
||
cd /home/gc/gangyan/chat_web_backend
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/sys.sql
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/chat_gpt.sql
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/knowledge_base.sql
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/gpt_folder.sql
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/writter_docs.sql
|
||
mysql -uroot -p1234567890 chat_gpt_yj < doc/sql/quartz.sql
|
||
```
|
||
|
||
### 方案3:如果MySQL在Docker中
|
||
|
||
```bash
|
||
# 查找MySQL容器
|
||
docker ps | grep mysql
|
||
|
||
# 进入容器
|
||
docker exec -it <容器名> mysql -uroot -p
|
||
|
||
# 然后执行重置密码的SQL
|
||
```
|
||
|
||
### 方案4:临时跳过数据库检查(仅用于测试)
|
||
|
||
如果只是想先启动看看其他功能,可以临时禁用数据库自动配置:
|
||
|
||
在 `ChatApplication.java` 中已经排除了 `DataSourceAutoConfiguration`,所以理论上可以启动,但功能会受限。
|
||
|
||
## 验证
|
||
|
||
测试连接:
|
||
```bash
|
||
mysql -uroot -p1234567890 -e "SHOW DATABASES;"
|
||
```
|
||
|
||
如果成功,应该能看到数据库列表。
|