Installatie MySQL

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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.

Zie ook

Bronnen