Installatie MySQL
Installatie van MySQL stelt weinig voor. De configuratie is echter iets ingewikkelder. Daar komt nog bij dat MySQL nogal kieskeurig is, als het gaat om configuratie-instellingen: Eén foutje, en het werkt niet meer. Daarom handig om de installatieprocedure goed te snappen, zodat ik weet wat ik precies moet doen om een cleane installatie te krijgen - Want dat gaat niet vanzelf!
Installatie
Installatie gaat middels
sudo apt install mysql-server
- Dit is inclusief MySQL-server, mysql-client, mysqldump en nog een paar routines
- MySQL Workbench moet je apart installeren (bij voorkeur downloaden vanaf https://dev.mysql.com/downloads/workbench)
- Zie Versies (MySQL) als je je afvraagt of je wel een voldoende recente versie krijgt.
Kun je inloggen?
Als het goed is, kun je nu inloggen middels
sudo mysql -u root
ongeacht of je het security hardening script hebt doorlopen.
Security Hardening Script
- Het Security Hardening Script start je middels
sudo mysql_secure_installation
). - Het spreekt voor zich, maar werkt niet goed
- Daarnaast maakt het sommige dingen (zoals verzinnen van wachtwoorden) een stuk ingewikkelder - Alleen doen voor externe machines (internet-facing). Ik doe dit dus niet op ontwikkelomgevingen.
Gebruikersaccount aanmaken
Er was een tijd dat ik binnen ontwikkelomgevingen altijd met root werkte. Dat lijkt niet meer te werken (ik heb niet uitgezocht hoe dat precies zit) en gelukkig is er een prima alternatief, dat ook nog veiliger is: Een gebruikersaccount aanmaken met alle benodigde rechten. Bv.:
create user jeroen@localhost identified by 'MijnWachtwoord'; grant all on *.* to jeroen@localhost with grant option;
Zie Gebruikers & rechten (MySQL) voor details.
Aanpassen configuratie-bestanden
Zie Configuratiebestanden (MySQL) voor gebruikelijke aanpassingen in
- .my.cnf - Persoonlijke instellingen
- /etc/mysql/my.cnf - Systeembrede instellingen
Zie Gebruikers & inloggen (MySQL) voor details.
Casus Linux Mint (mei 2018)
Dit betreft de algemene procedure voor installatie op een bijgewerkte instantie van Linux Mint 18.3 "Sylvia", uitgekomen in november 2017, gebaseerd op Ubuntu 16.04 [1].
Eigenlijke installatie
De eigenlijke installatie stelt weinig voor, en is in vijf minuten gedaan:
sudo apt install mysql-server
- Dit resulteert in een complete installatie van MySQL 5.7, inclusief de MySQL-client. Opvallend dat MySQL 5.7 wordt geïnstalleerd, maar niet 8.0. Overigens: MySQL Workbench voor 8.0 is lastig te installeren, dus wellicht een goede zaak om voorlopig nog versie 5.7 te gebruiken
- Tijdens de installatieprocedure wordt er om een nieuw root-wachtwoord gevraagd.
Security hardening-script
Mbv. sudo mysql_secure_installation
kun je de beveiliging bijwerken. Dat gebruik ik wel op servers, maar niet op locale ontwikkelomgevingen. Onderdeel van dit script, is het aanmaken van een MySQL-gebruikersaccount, maar dat lijkt niet te werken, want naderhand is dat account niet beschikbaar. Sterker nog: Zelfs 'gewoon' inloggen met het root-account lijkt dan niet te werken. Wat dan wel werkt: sudo mysql -u root -p
.
Gebruikersaccount aanmaken
Direct na installatie is er alleen een root-account beschikbaar. Daarin kun je inloggen middels mysql -u root -p
- Gebruiker aanmaken met zoiets als
grant all on *.* to jeroen@localhost identified by 'MijnGeheimeWachtwoord' with grant option;
. Zie Gebruikers & rechten (MySQL) voor details - Ik zou nu
FLUSH PRIVILEGES;
moeten doen om het nieuwe account te activeren, maar dat lijkt in de praktijk niet nodig te zijn - Verifiëer met
select user, grant_priv from mysql.user;
dat dit account werkt.
Verder: Indien het MySQL-gebruikersaccount dezelfde naam heeft als het computeraccount waarin ik werk, kan ik voortaan inloggen met mysql -p
.
Inloggen zonder wachtwoord
Creëer een .my.cnf
-bestand met bijpassende inhoud en bestandsrechten, om voortaan zonder wachtwoord te kunnen inloggen. Zie Gebruikers & inloggen (MySQL) voor details.
Verplaats storage location naar dropbox
Zie Storage location aanpassen (MySQL).
Overige aanpassingen
Casus Linux Mint (Nov. 2020)
Dit betreft installatie van MySQL op een ontwikkelmachine:
- Ik weet op dit moment nog niet, of ik een complete LAMP-server wil hebben, maar ik weet wel dat ik MySQL, inclusief MySQL Workbench ga gebruiken
- Het security hardening script sla ik over, want ontwikkelomgeving.
Eigenlijke installatie
Moeiteloos:
> sudo apt install mysql-server The following additional packages will be installed: libevent-core-2.1-7 libevent-pthreads-2.1-7 libhtml-template-perl libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0 Suggested packages: libipc-sharedcache-perl mailx tinyca The following NEW packages will be installed: libevent-core-2.1-7 libevent-pthreads-2.1-7 libhtml-template-perl libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server mysql-server-8.0 mysql-server-core-8.0 0 upgraded, 12 newly installed, 0 to remove and 30 not upgraded. Need to get 30,1 MB of archives. After this operation, 247 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://mirrors.xtom.nl/ubuntu focal-updates/main amd64 mysql-client-core-8.0 amd64 8.0.22-0ubuntu0.20.04.2 [4.202 kB] Get:2 http://mirrors.xtom.nl/ubuntu focal-updates/main amd64 mysql-client-8.0 amd64 8.0.22-0ubuntu0.20.04.2 [22,0 kB] Get:3 http://mirrors.xtom.nl/ubuntu focal/main amd64 libevent-core-2.1-7 amd64 2.1.11-stable-1 [89,1 kB] Get:4 http://mirrors.xtom.nl/ubuntu focal/main amd64 libevent-pthreads-2.1-7 amd64 2.1.11-stable-1 [7.372 B] Get:5 http://mirrors.xtom.nl/ubuntu focal/main amd64 libmecab2 amd64 0.996-10build1 [233 kB] Get:6 http://mirrors.xtom.nl/ubuntu focal-updates/main amd64 mysql-server-core-8.0 amd64 8.0.22-0ubuntu0.20.04.2 [17,5 MB] Get:7 http://mirrors.xtom.nl/ubuntu focal-updates/main amd64 mysql-server-8.0 amd64 8.0.22-0ubuntu0.20.04.2 [1.261 kB] Get:8 http://mirrors.xtom.nl/ubuntu focal/main amd64 libhtml-template-perl all 2.97-1 [59,0 kB] Get:9 http://mirrors.xtom.nl/ubuntu focal/main amd64 mecab-utils amd64 0.996-10build1 [4.912 B] Get:10 http://mirrors.xtom.nl/ubuntu focal/main amd64 mecab-ipadic all 2.7.0-20070801+main-2.1 [6.714 kB] Get:11 http://mirrors.xtom.nl/ubuntu focal/main amd64 mecab-ipadic-utf8 all 2.7.0-20070801+main-2.1 [4.380 B] Get:12 http://mirrors.xtom.nl/ubuntu focal-updates/main amd64 mysql-server all 8.0.22-0ubuntu0.20.04.2 [9.544 B] Fetched 30,1 MB in 48s (623 kB/s) Preconfiguring packages ... Selecting previously unselected package mysql-client-core-8.0. (Reading database ... 329058 files and directories currently installed.) Preparing to unpack .../00-mysql-client-core-8.0_8.0.22-0ubuntu0.20.04.2_amd64.deb ... Unpacking mysql-client-core-8.0 (8.0.22-0ubuntu0.20.04.2) ... Selecting previously unselected package mysql-client-8.0. Preparing to unpack .../01-mysql-client-8.0_8.0.22-0ubuntu0.20.04.2_amd64.deb ... Unpacking mysql-client-8.0 (8.0.22-0ubuntu0.20.04.2) ... Selecting previously unselected package libevent-core-2.1-7:amd64. Preparing to unpack .../02-libevent-core-2.1-7_2.1.11-stable-1_amd64.deb ... Unpacking libevent-core-2.1-7:amd64 (2.1.11-stable-1) ... Selecting previously unselected package libevent-pthreads-2.1-7:amd64. Preparing to unpack .../03-libevent-pthreads-2.1-7_2.1.11-stable-1_amd64.deb ... Unpacking libevent-pthreads-2.1-7:amd64 (2.1.11-stable-1) ... Selecting previously unselected package libmecab2:amd64. Preparing to unpack .../04-libmecab2_0.996-10build1_amd64.deb ... Unpacking libmecab2:amd64 (0.996-10build1) ... Selecting previously unselected package mysql-server-core-8.0. Preparing to unpack .../05-mysql-server-core-8.0_8.0.22-0ubuntu0.20.04.2_amd64.deb ... Unpacking mysql-server-core-8.0 (8.0.22-0ubuntu0.20.04.2) ... Selecting previously unselected package mysql-server-8.0. Preparing to unpack .../06-mysql-server-8.0_8.0.22-0ubuntu0.20.04.2_amd64.deb ... Unpacking mysql-server-8.0 (8.0.22-0ubuntu0.20.04.2) ... Selecting previously unselected package libhtml-template-perl. Preparing to unpack .../07-libhtml-template-perl_2.97-1_all.deb ... Unpacking libhtml-template-perl (2.97-1) ... Selecting previously unselected package mecab-utils. Preparing to unpack .../08-mecab-utils_0.996-10build1_amd64.deb ... Unpacking mecab-utils (0.996-10build1) ... Selecting previously unselected package mecab-ipadic. Preparing to unpack .../09-mecab-ipadic_2.7.0-20070801+main-2.1_all.deb ... Unpacking mecab-ipadic (2.7.0-20070801+main-2.1) ... Selecting previously unselected package mecab-ipadic-utf8. Preparing to unpack .../10-mecab-ipadic-utf8_2.7.0-20070801+main-2.1_all.deb ... Unpacking mecab-ipadic-utf8 (2.7.0-20070801+main-2.1) ... Selecting previously unselected package mysql-server. Preparing to unpack .../11-mysql-server_8.0.22-0ubuntu0.20.04.2_all.deb ... Unpacking mysql-server (8.0.22-0ubuntu0.20.04.2) ... Setting up libmecab2:amd64 (0.996-10build1) ... Setting up mysql-client-core-8.0 (8.0.22-0ubuntu0.20.04.2) ... Setting up libhtml-template-perl (2.97-1) ... Setting up mecab-utils (0.996-10build1) ... Setting up libevent-core-2.1-7:amd64 (2.1.11-stable-1) ... Setting up mysql-client-8.0 (8.0.22-0ubuntu0.20.04.2) ... Setting up libevent-pthreads-2.1-7:amd64 (2.1.11-stable-1) ... Setting up mecab-ipadic (2.7.0-20070801+main-2.1) ... Compiling IPA dictionary for Mecab. This takes long time... reading /usr/share/mecab/dic/ipadic/unk.def ... 40 emitting double-array: 100% |###########################################| /usr/share/mecab/dic/ipadic/model.def is not found. skipped. reading /usr/share/mecab/dic/ipadic/Others.csv ... 2 reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393 reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750 reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42 reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221 reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91 reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999 reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19 reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202 reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032 reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795 reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120 reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668 reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146 reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208 reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210 reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135 reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477 reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199 reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328 reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151 reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146 reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171 reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42 reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328 reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252 emitting double-array: 100% |###########################################| reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316 emitting matrix : 100% |###########################################| done! update-alternatives: using /var/lib/mecab/dic/ipadic to provide /var/lib/mecab/dic/debian (mecab-dictionary) in auto m ode Setting up mysql-server-core-8.0 (8.0.22-0ubuntu0.20.04.2) ... Setting up mecab-ipadic-utf8 (2.7.0-20070801+main-2.1) ... Compiling IPA dictionary for Mecab. This takes long time... reading /usr/share/mecab/dic/ipadic/unk.def ... 40 emitting double-array: 100% |###########################################| /usr/share/mecab/dic/ipadic/model.def is not found. skipped. reading /usr/share/mecab/dic/ipadic/Others.csv ... 2 reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393 reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750 reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42 reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221 reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91 reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999 reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19 reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202 reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032 reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795 reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120 reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668 reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146 reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208 reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210 reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135 reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477 reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199 reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27328 reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151 reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146 reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171 reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42 reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328 reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252 emitting double-array: 100% |###########################################| reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316 emitting matrix : 100% |###########################################| done! update-alternatives: using /var/lib/mecab/dic/ipadic-utf8 to provide /var/lib/mecab/dic/debian (mecab-dictionary) in a uto mode Setting up mysql-server-8.0 (8.0.22-0ubuntu0.20.04.2) ... update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode Renaming removed key_buffer and myisam-recover options (if present) mysqld will log errors to /var/log/mysql/error.log mysqld is running as pid 6302 Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service. Setting up mysql-server (8.0.22-0ubuntu0.20.04.2) ... Processing triggers for systemd (245.4-4ubuntu3.3) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
Inloggen
Eerder dit jaar kostte het me flink wat tijd om te achterhalen hoe je voor de eerste keer inlogt. Zo dus:
> mysql ERROR 1045 (28000): Access denied for user 'jeroen'@'localhost' (using password: NO) > mysql -u root ERROR 1698 (28000): Access denied for user 'root'@'localhost' > sudo mysql # Gelukt!
Eigen beheer-account aanmaken
create user jeroen@localhost identified by 'MijnWachtwoord'; grant all on *.* to jeroen@localhost with grant option;
Het account werkte direct (mysql -u jeroen -p
). Dus geen gedoe met flush privileges ofzo.
Creëer ~/.my.cnf-bestand
Door een .my.cnf
-bestand aan te maken, kan ik inloggen zonder m'n wachtwoord te hoeven opgeven - Ideaal! Zie Configuratiebestanden (MySQL) voor details.
Creëer /etc/mysql/my.cnf-bestand
Zie Configuratiebestanden (MySQL) voor details.