# 3. הגדרת מסד נתונים

<span dir="auto"><span class="" dir="auto">Roost מאחסן את סטטוס זרימת העבודה של GPT ומידע רלוונטי אחר במסד הנתונים. Roost תומך ב-MySQL, Postgres ו-Amazon Aurora DB. כל מסד נתונים נדרש כדי ש-RoostGPT יפעל.</span></span>

<span dir="auto">להלן השלבים להגדרת RDS ב-AWS</span>

### <span dir="auto">אמזון אורורה (תואם ל-MySQL) או MySQL</span>

1. <span dir="auto">בחר RDS</span>
2. <span dir="auto">בחר צור מסד נתונים</span>
3. <span dir="auto">בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות MYSQL" או "MySQL"</span>
4. <span dir="auto">שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 3306 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.</span>
5. <span dir="auto">רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)</span>

<span dir="auto">צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.</span>

```
# Sample command to create a user using MySQL CLI 
# Provide password on prompt 

mysql -h <SQL Host URL> -u <root|master|admin> -p
```

```
CREATE USER 'Roost'@'%' identified WITH mysql_native_password by 'Roost#123'; 
CREATE DATABASE roostio;
GRANT ALL on roostio.* to 'Roost'@'%';

# Execute the Roost Schema file, if available
\. /var/tmp/Roost/db/roost.sql
```

### <span dir="auto">אמזון אורורה (תואם ל-PostgreSQL) או PostgreSQL</span>

1. <span dir="auto">בחר RDS</span>
2. <span dir="auto">בחר צור מסד נתונים</span>
3. <span dir="auto">בחר "יצירה קלה" עבור "Amazon Aurora עם תאימות PostgreSQL" או "PostgreSQL"</span>
4. <span dir="auto">שנה את קבוצת האבטחה של RDS כדי לאפשר גישה ליציאת TCP 5432 לקבוצת האבטחה של מופעי מישור הבקרה בלבד.</span>
5. <span dir="auto">רשום לעצמך את נקודת הקצה, המשתמש והסיסמה של מסד הנתונים של מופע הכותב (יש צורך בכך בהמשך בתצורה שלהלן)</span>
6. <span dir="auto">צור משתמש חדש עם הרשאות קריאה וכתיבה והימנע משימוש בהתחברות של מנהל מערכת.</span>

```
psql "host=<PG Host URL> user=<admin> dbname=postgres port=5432 sslmode=require"
```

```

CREATE DATABASE roostio;                                  -- creates app database [5]
CREATE USER roost WITH PASSWORD 'Roost#123';              -- creates login role [3]
GRANT ALL PRIVILEGES ON DATABASE roostio TO roost;        -- DB-level grant [4]

-- Connect to the new DB (reconnect as admin or roost), then set schema privileges
\c roostio                                        
GRANT USAGE ON SCHEMA public TO roost;                   
GRANT ALL ON ALL TABLES IN SCHEMA public TO roost;     
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO roost;   
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT ALL ON TABLES TO roost;                       
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT USAGE ON SEQUENCES TO roost;                   

-- Execute the Roost Schema file, if available
\i /var/tmp/Roost/db/roost.sql  
```