# Users, Privileges और Security — MySQL Fundamentals: SQL, Joins और Transactions

Source: https://www.geekswithgeeks.com/hi/mysql/sql-users-privileges

> Least-privilege GRANTs के साथ MySQL users बनाएँ, applications में root उपयोग करने से बचें और मजबूत passwords से data सुरक्षित रखें।

## Least privilege

Applications को `root` के रूप में नहीं जुड़ना चाहिए। हर application के लिए अलग user बनाएँ और केवल वही privileges दें जो उसे चाहिए, और केवल उसी database पर।

User बनाएँ, सीमित अधिकार दें और उनकी समीक्षा करें।

```sql
CREATE USER 'shop_app'@'localhost' IDENTIFIED BY 'a-strong-password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'shop_app'@'localhost';
SHOW GRANTS FOR 'shop_app'@'localhost';

REVOKE DELETE ON shop.* FROM 'shop_app'@'localhost';
```

User input जोड़कर SQL कभी न बनाएँ। SQL injection रोकने के लिए prepared statements या parameterised queries उपयोग करें, और passwords को source control से बाहर रखें।

त्वरित जाँच

**Quiz:** कौन-सी practice SQL injection को सबसे अच्छी तरह रोकती है?

- [x] Parameterised queries
- [ ] Strings जोड़ना
- [ ] हर जगह root उपयोग करना
- [ ] Indexes बंद करना

*Answer:* Parameterised queries. Parameters user input को SQL code से अलग रखते हैं।
