MySQL Handleiding op Ubuntu Server (via de Console)¶
Introductie tot MySQL (CLI)¶
In deze handleiding leer je hoe je mysql gebruikt op een Linux-systeem via de command-line (CLI).
Het commando mysql wordt gebruikt om verbinding te maken met databases, queries uit te voeren, gebruikers te beheren en databases te configureren.
Hoewel MySQL vaak via webtools zoals phpMyAdmin wordt gebruikt, is de CLI de krachtigste en snelste manier om met databases te werken.
MySQL wordt vaak gebruikt in combinatie met applicaties zoals PHP, Node.js en Python.
Achtergrondinformatie
MySQL is een relationeel database management systeem (RDBMS).
- Werkt met databases, tabellen en records
- Gebruikt SQL (Structured Query Language)
- CLI is ideaal voor beheer, debugging en automatisering
- Veel gebruikt in combinatie met LAMP stack
- In deze handleiding gebruiken we MySQL 8.x
MySQL Versies¶
π Controleer jouw versie¶
Of ingelogd in MySQL:¶
Voorbeeldoutput
π Uitgebreid overzicht van MySQL versies¶
| Versie | Release | Status | Belangrijkste kenmerken | Opmerking |
|---|---|---|---|---|
| MySQL 8.4 | 2024 | β LTS (Long Term Support) | Performance verbeteringen, betere security | Aanbevolen voor productie |
| MySQL 8.0 | 2018 | β Actief ondersteund | JSON support, window functions, CTEβs | Meest gebruikt |
| MySQL 5.7 | 2015 | π Security fixes / EOL nabij | Verbeterde performance, JSON (basis) | Nog legacy gebruik |
| MySQL 5.6 | 2013 | β EOL | InnoDB verbeteringen | Verouderd |
| MySQL 5.5 | 2010 | β EOL | Default InnoDB engine | Niet meer gebruiken |
| MySQL 5.1 | 2008 | β EOL | Partitioning support | |
| MySQL 5.0 | 2005 | β EOL | Stored procedures, views | Grote upgrade |
| MySQL 4.x | 2003β2005 | β EOL | Basis database features | |
| MySQL 3.x | 1998β2003 | β EOL | Eerste stabiele versies |
π Belangrijke inzichten¶
- MySQL 8.x introduceert moderne database features zoals:
- Window functions
- Common Table Expressions (CTEβs)
-
Sterke JSON ondersteuning
-
MySQL 5.7 wordt nog gebruikt, maar is verouderd aan het raken.
- Oudere versies (<5.7) zijn onveilig en niet geschikt voor productie.
π Aanbeveling¶
Gebruik altijd een actief ondersteunde versie:
- βοΈ Aanbevolen: MySQL 8.0 of 8.4 LTS
- β οΈ Vermijd: Alles onder MySQL 5.7
βοΈ Installeren van mysql-server¶
MySQL kan worden geΓ―nstalleerd via de standaard pakketmanager.
Installatie op Debian/Ubuntu:
Voorbeeldoutput
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
mysql-server mysql-client mysql-common
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.6 MB of archives.
After this operation, 196 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Setting up mysql-common (8.0.36-0ubuntu0.22.04.1) ...
Setting up mysql-client (8.0.36-0ubuntu0.22.04.1) ...
Setting up mysql-server (8.0.36-0ubuntu0.22.04.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service β /lib/systemd/system/mysql.service.
MySQL Secure Installation
mysql_secure_installation helpt om een nieuwe MySQL-installatie veiliger te maken:
- Stel een root-wachtwoord in (voor MySQL 8+ vaak via
auth_socketofcaching_sha2_password) - Verwijder anonieme gebruikers
- Schakel root login vanaf externe hosts uit
- Verwijder testdatabases
- Herlaad privilege-tabellen
Start het script:
Voorbeeld interactie:
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD COMPONENT can be used to test passwords.
Press y|Y for Yes, any other key for No: y
Please set the root password: ********
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Het script beveiligt de installatie en minimaliseert potentiΓ«le veiligheidsrisico's.
π Inloggen in MySQL¶
Gebruik de root-gebruiker om in te loggen (of een andere gebruiker met de juiste rechten):
π Databases beheren¶
Databases tonen:
Database aanmaken:
Database selecteren (om in te werken):
Database verwijderen:
Tips
- Gebruik duidelijke, beschrijvende namen voor databases.
- Controleer altijd of je de juiste database geselecteerd hebt voordat je
DROPgebruikt. - Je kunt
SHOW TABLES;gebruiken om alle tabellen binnen de geselecteerde database te zien.
π€ Gebruikersbeheer in MySQL¶
In MySQL kun je gebruikers aanmaken, rechten toewijzen en gebruikers verwijderen. Het host-gedeelte (@'host') bepaalt vanaf welke machines de gebruiker verbinding mag maken.
'localhost': alleen lokaal vanaf de server.'%'of'any host': verbinding vanaf elke host toegestaan.- Specifieke IP of hostname: alleen vanaf die host verbinding toegestaan.
Nieuwe gebruiker aanmaken¶
Vervang
localhosteventueel door%om verbinding vanaf elke host toe te staan.
Rechten geven¶
Dit geeft alle rechten op
mijn_databaseaan de gebruiker. Paslocalhostaan als je verbinding vanaf een andere host wil toestaan.
Rechten verversen¶
Zorgt ervoor dat wijzigingen direct actief worden.
Gebruiker verwijderen¶
Verwijdert de gebruiker volledig. Zorg dat je het juiste hostgedeelte gebruikt.
ποΈ Tabellen en Data Beheer in MySQL¶
Hier leer je hoe je tabellen kunt tonen, maken, gegevens kunt invoegen, opvragen, updaten en verwijderen.
Tabellen tonen¶
Lijst alle tabellen in de huidige database.
Tabel maken¶
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Voeg
NOT NULLenUNIQUEtoe voor dataconsistentie encreated_atvoor timestamping.
Data invoegen¶
Je kunt meerdere rijen tegelijk invoegen:
Data ophalen¶
Voor specifieke kolommen:
Sorteren en beperken:
Data updaten¶
Meerdere rijen updaten:
Data verwijderen¶
Wees voorzichtig met DELETE, gebruik altijd een WHERE-clausule om te voorkomen dat je alle data verwijdert. Voor tijdelijke backups kun je eerst selecteren:
Om alle data te verwijderen zonder de tabel te droppen:
MySQL-configuratie en instellingen
Controleer welke configuratiebestanden MySQL gebruikt:
Voorbeeldoutput:
Default options are read from the following files in the given order:
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
~/.my.cnf
- /etc/mysql/my.cnf / mysqld.cnf β hoofdconfiguratie voor de MySQL server.
- ~/.my.cnf β gebruikersspecifieke configuratie (CLI-instellingen zoals username, password, host).
Hier zijn enkele belangrijke MySQL-instellingen die je kunt aanpassen in my.cnf of mysqld.cnf:
| Sectie | Parameter | Beschrijving | Aanbeveling / Tips |
|---|---|---|---|
[mysqld] |
bind-address |
IP-adres waarop MySQL luistert | 127.0.0.1 voor alleen lokaal, % voor alle hosts, of server IP voor specifieke externe toegang |
[mysqld] |
port |
Poort waarop MySQL luistert | Standaard 3306, aanpassen bij conflictsituaties |
[mysqld] |
max_connections |
Maximaal aantal gelijktijdige verbindingen | Voor drukke servers verhogen, bv. 200 |
[mysqld] |
sql_mode |
SQL-compatibiliteit | Bijvoorbeeld STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION voor veilige inserts |
[mysqld] |
innodb_buffer_pool_size |
Cache grootte voor InnoDB | 70β80% van RAM voor databaseserver optimalisatie |
[mysqld] |
slow_query_log |
Log langzaam uitgevoerde queries | ON om performance bottlenecks te identificeren |
[mysqld] |
slow_query_log_file |
Bestand voor langzaam query log | /var/log/mysql/slow.log of eigen pad |
[mysqld] |
log_error |
Error log locatie | /var/log/mysql/error.log |
[client] |
default-character-set |
Standaard karakterset client | utf8mb4 aanbevolen |
[mysql] |
prompt |
Prompt in MySQL CLI | \u@\h [\d]> voor gebruiker+host info |
[mysql] |
pager |
Output formatter | Bijvoorbeeld less -S voor horizontaal scrollen |
[mysql] |
histignore |
Queries die niet in geschiedenis komen | Bv. SELECT * FROM om ruis te vermijden |
[mysql] |
history |
Query geschiedenis activeren | Standaard aan, zodat je eerdere queries terug kunt halen |
[mysql] |
auto_rehash |
Tab-completion aan/uit | Aan: sneller zoeken in tabellen/kolommen |
[mysql] |
tee |
Loggen van sessie naar bestand | tee /var/log/mysql_session.log om alle sessiecommandoβs op te slaan |
πΉ Tips bij aanpassen van MySQL-configuratie: - Maak altijd een backup van configuratiebestanden:
- Na wijzigingen MySQL herstarten: - Controleer de actieve instellingen: - Gebruikmysql --help of mysql -e 'SHOW VARIABLES;' om live instellingen te controleren.
- Pas buffer-, cache- en log-instellingen aan op basis van de workload voor optimale performance.
- Let op bind-address en hosttypes (localhost, %, specifieke IP) voor beveiliging en externe toegang.