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;"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果成功,应该能看到数据库列表。
|