Zo maakt u een openbare gebruiker in MySQL met wachtwoordverificatie, specifiek voor alleen-lezen toegang tot een database:
1. Maak verbinding met MySQL als een bevoorrechte gebruiker:
Eerst moet u verbinding maken met uw MySQL-server als gebruiker met beheerdersrechten (zoals `root`). Gebruik de MySQL-client:
``` bash
mysql -u root-p
```
Voer het rootwachtwoord in wanneer daarom wordt gevraagd.
2. Maak de gebruiker aan:
Gebruik de instructie `CREATE USER` om de nieuwe gebruiker aan te maken. Vervang `'public_user'` en `'your_password'` door uw gewenste gebruikersnaam en wachtwoord. De clausule `IDENTIFIED BY` stelt het wachtwoord van de gebruiker in. De `%` betekent van elke host.
```sql
MAAK GEBRUIKER 'public_user'@'%' GEIDENTIFICEERD DOOR 'uw_wachtwoord';
```
Belangrijke veiligheidsopmerking: Door `'%'` te gebruiken, kan de gebruiker verbinding maken vanaf *elke* host. Dit is om veiligheidsredenen vaak *geen* een goed idee. Als u weet dat de gebruiker alleen verbinding zal maken vanaf een specifiek IP-adres of hostnaam, vervang dan `'%'` door dat adres (bijvoorbeeld `'public_user'@'192.168.1.100'` of `'public_user'@'uwdomein.com'`). Bijvoorbeeld:
```sql
MAAK GEBRUIKER 'public_user'@'192.168.1.100' GEIDENTIFICEERD DOOR 'uw_wachtwoord';
```
Hierdoor zou de gebruiker alleen verbinding kunnen maken vanaf het IP-adres `192.168.1.100`.
3. Alleen-lezen-rechten verlenen:
Gebruik de `GRANT`-instructie om de gebruiker alleen-lezen toegang te geven tot de specifieke database. Vervang `uw_database` door de naam van de database waartoe u toegang wilt verlenen.
```sql
VERLEEN SELECTIE OP uw_database.* AAN 'public_user'@'%';
```
* `SELECT`:Hiermee kan de gebruiker gegevens uit tabellen in de database lezen.
* `uw_database.*`:Specificeert dat het privilege van toepassing is op alle tabellen binnen `uw_database`.
* `TO 'public_user'@'%'`:Specificeert de gebruiker en host waarvoor het privilege wordt verleend.
4. Spoelrechten:
Nadat u privileges heeft verleend, moet u de privilegetabellen leegmaken om de wijzigingen door te voeren.
```sql
SPOEL PRIVILEGES;
```
5. Sluit MySQL af:
```sql
Uitgang;
```
Volledig voorbeeld:
``` bash
mysql -u root -p # Verbinden als root
Voer uw rootwachtwoord in wanneer daarom wordt gevraagd
MAAK GEBRUIKER 'public_user'@'%' GEIDENTIFICEERD DOOR 'MySecurePassword123!';
VERLEEN SELECTIE OP uw_database.* AAN 'public_user'@'%';
SPOEL PRIVILEGES;
Uitgang;
```
Uitleg en belangrijke overwegingen:
* `GEBRUIKER MAKEN`: Creëert een nieuw MySQL-gebruikersaccount.
* `GRANT`: Wijst specifieke machtigingen (privileges) toe aan een gebruiker.
* `SPOEL PRIVILEGES`: Laadt de subsidietabellen opnieuw. Dit is *essentieel* na het aanbrengen van wijzigingen in de gebruikersrechten; anders worden de wijzigingen mogelijk niet onmiddellijk van kracht.
* `GEIDENTIFICEERD DOOR`: Stelt het wachtwoord van de gebruiker in. Kies een sterk wachtwoord!
* Beste praktijken op het gebied van beveiliging:
* Hosttoegang beperken: Zoals gezegd, vermijd indien mogelijk het gebruik van `'%'` voor de host. Beperk de gebruiker om alleen verbinding te maken vanaf bekende en vertrouwde IP-adressen.
* Privilegeprincipe: Verleen alleen de minimale rechten die de gebruiker nodig heeft. In dit geval is `SELECT` voldoende voor alleen-lezen toegang. Vermijd het verlenen van 'ALLE PRIVILEGES', tenzij dit absoluut noodzakelijk is.
* Wachtwoordcomplexiteit: Dwing een sterk wachtwoordbeleid af. Gebruik een combinatie van hoofdletters en kleine letters, cijfers en symbolen. Overweeg het gebruik van de wachtwoordvalidatieplug-in van MySQL voor een sterkere wachtwoordhandhaving.
* SSL/TLS: Voor productieomgevingen moet u de verbindingen tussen de client en de MySQL-server altijd coderen met SSL/TLS om het wachtwoord en de gegevens die via het netwerk worden verzonden te beschermen.
* Alternatieve rechten: In plaats van `SELECT` toe te kennen aan de gehele database (`uw_database.*`), kunt u `SELECT` alleen aan specifieke tabellen toekennen:
```sql
VERLEEN SELECTIE OP uw_database.table1 AAN 'public_user'@'%';
VERLEEN SELECTIE OP uw_database.table2 AAN 'public_user'@'%';
```
Dit is zelfs nog veiliger, omdat het de toegang beperkt tot alleen de benodigde tabellen.
* Controle: Overweeg om de auditlogboekregistratie van MySQL in te schakelen om bij te houden wie toegang heeft tot de database en welke query's ze uitvoeren.
Verbinding maken met de nieuwe gebruiker:
Verbinding maken met de nieuwe gebruiker:
``` bash
mysql -u public_user -p -h jouw_mysql_host -D jouw_database
```
* `-u public_user`:Specificeert de gebruikersnaam.
* `-p`:vraagt om het wachtwoord.
* `-h your_mysql_host`:Specificeert de hostnaam of het IP-adres van uw MySQL-server. Als u verbinding maakt vanaf dezelfde machine, kunt u dit vaak achterwege laten of `localhost` of `127.0.0.1` gebruiken.
* `-D your_database`:Specificeert de database waarmee verbinding moet worden gemaakt.
Nadat u deze opdracht hebt uitgevoerd, wordt u gevraagd het wachtwoord van de `public_user` in te voeren.
Door deze stappen te volgen en de beveiligingsaanbevelingen in acht te nemen, kunt u op een veilige en gecontroleerde manier een openbare gebruiker met alleen-lezen toegang tot uw MySQL-database aanmaken. Geef altijd prioriteit aan beveiliging bij het verlenen van toegang tot uw gegevens. |