рдЕрдЧрд░ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Google Antigravity, Cursor, Windsurf, VS Code, рдпрд╛ рдХрд┐рд╕реА рднреА AI-IDE рдХреА рдорджрдж рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Backend рдХреЗ рд▓рд┐рдП Supabase рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдордп рдРрд╕рд╛ рдЬрд╝рд░реВрд░ рдЖрдПрдЧрд╛ рдЬрдм рдЖрдкрдХреЛ рдпрд╣ Verify рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреА Database Tables рдкрд░ Row Level Security (RLS) рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ Enabled рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдХрдИ рдмрд╛рд░ AI Assistant (рдЬреИрд╕реЗ Gemini Flash, Claude, рдпрд╛ ChatGPT) рд▓рд╛рдЗрд╡ Database рдХреЛ Scan рдпрд╛ Security Audit рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрдкрдХреЗ Database рдХрд╛ Direct Access рдирд╣реАрдВ рд╣реЛрддрд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ Terminal рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ RLS Status Check рдХрд░рдирд╛ рд╕рдмрд╕реЗ Reliable рдФрд░ Accurate рддрд░реАрдХрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ Guide рдореЗрдВ рд╣рдо рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рдкреВрд░рд╛ Process рд╕рдордЭреЗрдВрдЧреЗред
рдЗрд╕ Guide рдореЗрдВ рдХреНрдпрд╛ рд╕реАрдЦреЗрдВрдЧреЗ?
рдХреМрди-рд╕реЗ Environment Variables рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
psql рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреИрд╕реЗ Install рдХрд░реЗрдВ
Terminal рд╕реЗ рд╕рднреА Tables рдХрд╛ RLS Status рдХреИрд╕реЗ рджреЗрдЦреЗрдВ
рдХрд┐рди Tables рдкрд░ RLS Enabled рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ
Database Policies рдХреИрд╕реЗ Check рдХрд░реЗрдВ
anon Role рдХрд┐рди Tables рдХреЛ Access рдХрд░ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдХреИрд╕реЗ Verify рдХрд░реЗрдВ
Part 1: RLS Check рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди-рд╕реЗ Environment Variables рдЪрд╛рд╣рд┐рдП?
RLS Status Check рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ Direct PostgreSQL Connection String рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЕрдзрд┐рдХрд╛рдВрд╢ Projects рдореЗрдВ рдпрд╣ рдЖрдкрдХреА .env рдпрд╛ .env.local рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИред
рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдЗрд╕рдХрд╛ рдирд╛рдо рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИтАФ
DIRECT_URL
DATABASE_URL
POSTGRES_URL_NON_POOLING
Note: рдпрджрд┐ рдЖрдк DATABASE_URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрд╕рдореЗрдВ pgbouncer=true рди рд╣реЛред
Direct Connection String рдХрд╛ Format
postgresql://postgres:[PASSWORD]@db.[project-ref].supabase.co:5432/postgresConnection String рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХрд╛ рдЕрд░реНрде
| Component | рд╡рд┐рд╡рд░рдг |
|---|---|
| postgres | Default PostgreSQL Username |
| [PASSWORD] | Database Password |
| db.project-ref.supabase.co | рдЖрдкрдХреЗ Supabase Project рдХрд╛ Database Host |
| 5432 | Direct PostgreSQL Port |
| postgres | Default Database Name |
Direct Connection рдФрд░ Pooled Connection рдореЗрдВ рдЕрдВрддрд░
Supabase рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ Database Connections рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред
| Connection Type | Port | рдХрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ |
|---|---|---|
| Direct Connection | 5432 | Terminal, psql, Migration, Database Inspection |
| Pooler (PgBouncer) | 6543 | Application Runtime рдПрд╡рдВ High Connection Load |
рдпрджрд┐ рдЖрдкрдХреА Connection String рдореЗрдВтАФ
pgbouncer=true
рдпрд╛ Port 6543
рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ Pooled Connection рд╣реИред
рдРрд╕реА Connection String рдХреЛ psql рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЕрдХреНрд╕рд░ рдпрд╣ Error рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИтАФ
invalid URI query parameter: "pgbouncer"рдЗрд╕рд▓рд┐рдП RLS Check рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ Direct Connection (Port 5432) рдХрд╛ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрджрд┐ Direct URL рдЙрдкрд▓рдмреНрдз рди рд╣реЛ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?
Supabase Dashboard рдЦреЛрд▓реЗрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ Path Follow рдХрд░реЗрдВтАФ
Project Settings тЖТ Database тЖТ Connection String
рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рджреЛ рд╡рд┐рдХрд▓реНрдк рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗтАФ
Session / Transaction Pooler (6543)
Direct Connection (5432)
рд╣рдореЗрд╢рд╛ Direct Connection рд╡рд╛рд▓реА String рд╣реА Copy рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдгтАФ
DIRECT_URL="postgresql://postgres:[password]@db.xxxxx.supabase.co:5432/postgres"рдХреНрдпрд╛ рдЕрдиреНрдп Environment Variables рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдирд╣реАрдВред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП Variables Application рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди RLS Check рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY
Part 2: рдкрд╣рд▓реА рдмрд╛рд░ psql Install рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдпрджрд┐ Terminal рдореЗрдВ рдпрд╣ Error рдЖрддреА рд╣реИтАФ
command not found: psqlрддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЗ System рдореЗрдВ PostgreSQL Client Install рдирд╣реАрдВ рд╣реИред
рдпрд╣ Setup рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИред
Step 1 тАФ PostgreSQL Client Install рдХрд░реЗрдВ
brew install libpqStep 2 тАФ рдпрджрд┐ Homebrew Permission Error рдЖрдП
рдпрджрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ Error рджрд┐рдЦрд╛рдИ рджреЗтАФ
opt/homebrew is not writableрддреЛ рдкрд╣рд▓реЗ Permission рдареАрдХ рдХрд░реЗрдВтАФ
sudo chown -R $(whoami) /opt/homebrewMac рдЖрдкрдХрд╛ Login Password рдкреВрдЫреЗрдЧрд╛ред
Password рджрд░реНрдЬ рдХрд░рдХреЗ Enter рджрдмрд╛рдПрдБред
рдЗрд╕рдХреЗ рдмрд╛рдж Install Command рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдБтАФ
brew install libpqStep 3 тАФ psql рдХреЛ PATH рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
libpq Install рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА рдХрдИ рдмрд╛рд░ psql рд╕реАрдзреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ред
рдЗрд╕реЗ PATH рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПтАФ
echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc source ~/.zshrcStep 4 тАФ Installation Verify рдХрд░реЗрдВ
psql --versionрдпрджрд┐ Output рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗтАФ
psql (PostgreSQL) 18.4рддреЛ рдЖрдкрдХрд╛ Setup рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ Complete рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдЕрдм рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рднреА Project рдХреЗ рд▓рд┐рдП рджреЛрдмрд╛рд░рд╛ Install рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
Part 3: Terminal рд╕реЗ RLS Status рдХреИрд╕реЗ Check рдХрд░реЗрдВ?
рдЕрдм Actual Security Verification рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
Step 1 тАФ Project Folder рдЦреЛрд▓реЗрдВ
Terminal рдореЗрдВ рдЕрдкрдиреЗ Project рдХреЗ Root Directory рдкрд░ рдЬрд╛рдПрдБред
рдпрд╣реАрдВ рдЖрдкрдХреА .env рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
Step 2 тАФ Database URL Load рдХрд░реЗрдВ
рдпрджрд┐ Variable рдХрд╛ рдирд╛рдо DIRECT_URL рд╣реИтАФ
export $(grep DIRECT_URL .env | xargs)рдпрджрд┐ рдЖрдкрдХреЗ Project рдореЗрдВ Variable рдХрд╛ рдирд╛рдо рдЕрд▓рдЧ рд╣реИ, рдЬреИрд╕реЗ DATABASE_URL, рддреЛ рдЙрд╕реА рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
Step 3 тАФ рд╕рднреА Tables рдХрд╛ RLS Status рджреЗрдЦреЗрдВ
psql "$DIRECT_URL" -c "SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public' ORDER BY tablename;"Output рдХрд╛ рдЕрд░реНрде
| Value | Meaning |
|---|---|
| t | Row Level Security Enabled |
| f | Row Level Security Disabled |
рдпрджрд┐ рдХрд┐рд╕реА Table рдХреЗ рд╕рд╛рдордиреЗ t рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ Table рдкрд░ RLS Enabled рд╣реИред
рдпрджрд┐ f рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ Table рдЕрднреА Protected рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ Security рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Step 4 тАФ рдХреЗрд╡рд▓ Unprotected Tables рджреЗрдЦреЗрдВ
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЙрди Tables рдХреА рд╕реВрдЪреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ RLS Enabled рдирд╣реАрдВ рд╣реИтАФ
psql "$DIRECT_URL" -c "SELECT tablename FROM pg_tables WHERE schemaname='public' AND rowsecurity=false;"рдпрджрд┐ Output рдореЗрдВ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗтАФ
(0 rows)рддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Public Schema рдХреА рд╕рднреА Tables рдкрд░ RLS Enabled рд╣реИред
Step 5 тАФ рд╕рднреА RLS Policies рджреЗрдЦреЗрдВ
рдпрджрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ Table рдкрд░ рдХреМрди-рд╕реА Policy рд▓рд╛рдЧреВ рд╣реИтАФ
psql "$DIRECT_URL" -c "SELECT tablename, policyname, roles, cmd FROM pg_policies WHERE schemaname='public' ORDER BY tablename;"рдЗрд╕ Query рд╕реЗ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ Table рдХреА Policy, Allowed Roles рдФрд░ Allowed Commands рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред
Step 6 тАФ anon Role рдХрд╛ Access Verify рдХрд░реЗрдВ
рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг Security Check рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ Login рдХрд┐рдП Public Users рдХрд┐рди Tables рдХреЛ Access рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
psql "$DIRECT_URL" -c "SELECT tablename, policyname, cmd, qual FROM pg_policies WHERE schemaname='public' AND 'anon'=ANY(roles) ORDER BY tablename;"рдХрд┐рди Tables рдХрд╛ anon Role рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ?
рдпрджрд┐ рдЖрдкрдХреА Application рдореЗрдВ рдиреАрдЪреЗ рдЬреИрд╕реА Sensitive Tables рд╣реИрдВтАФ
users
profiles
subscribers
payments
orders
admin_sessions
bookings
рддреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдЗрди Tables рдХрд╛ anon Role рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ред
рдпрджрд┐ рдпреЗ рдЗрд╕ List рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ Public Users рд╕реАрдзреЗ рдЙрдирдХрд╛ Data Access рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
Bonus Tip
рдпрджрд┐ рдХрд┐рд╕реА Command рдХрд╛ Output Terminal рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реЛ рдЬрд╛рдП рдФрд░ рдиреАрдЪреЗ (END) рджрд┐рдЦрд╛рдИ рджреЗ, рддреЛ рдШрдмрд░рд╛рдПрдБ рдирд╣реАрдВред
рдмрд╕ Keyboard рдкрд░тАФ
qрджрдмрд╛рдПрдБред
рдЖрдк рддреБрд░рдВрдд Page Mode рд╕реЗ рдмрд╛рд╣рд░ рдЖ рдЬрд╛рдПрдБрдЧреЗред
рдирд┐рд╖реНрдХрд░реНрд╖ (Conclusion)
Supabase Project рдХреА Security Verify рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рднрд░реЛрд╕реЗрдордВрдж рддрд░реАрдХрд╛ Terminal рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ RLS Status Check рдХрд░рдирд╛рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд╣реА Direct PostgreSQL Connection String рдореМрдЬреВрдж рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдХреБрдЫ psql Commands рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВтАФ
рдХреМрди-рд╕реА Tables рдкрд░ RLS Enabled рд╣реИред
рдХреМрди-рд╕реА Tables рдЕрднреА рднреА Unprotected рд╣реИрдВред
рдХреМрди-рд╕реА Policies рд▓рд╛рдЧреВ рд╣реИрдВред
Public (anon) Users рдХрд┐рди Resources рдХреЛ Access рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ Supabase, PostgreSQL, Next.js, AI-Generated Projects, рдпрд╛ Google Antigravity рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ Security Check рдЖрдкрдХреЗ Development Workflow рдХрд╛ рд╕реНрдерд╛рдпреА рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд╕реЗ Production рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд Security Issues рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ Database рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред
---ends here---


