Ez a fejezet a MySQL 5.1 és 5.6 telepítéséről fog szólni az alapvető beállításokkal. Azért erről a kettőről, mert lehetőség szerint törekszem arra, hogy mindenből legyen egy legújabb verzió és amellett egy régebbi. Jelen pillanatban az 5.6 a legújabb.
Az 5.1 viszont még mindig elterjedt, és azt még az Apache telepítésénél megismert módszerrel kell fordítani, ami az 5.5 verzióban változott meg. Így két különböző módszert mutathatok be, majd a végén lesz egy friss és egy viszonylag régebbi MySQL verzió teszteléshez.
A köztük levő 5.5-ös verzió pedig az 5.6 alapján telepíthető.
Bevezető
A forráskódból való saját fordítás mellet azzal érveltem többek közt, hogy másképp nem lehet egyszerre két verziót telepíteni. A MySQL-nél ez nem teljesen igaz, ugyanis a mysql.com-ról letölthető .deb csomagfájlokkal verzióra utaló, külön mappába történik a telepítés.
Egyrészt ez túl egyszerű, másrészt talán meggyőzőbb érv a fordítás mellett, hogy még mindig több beállítás lehetséges már a telepítés pillanatában. Ennek persze én csak töredékét használom, de mindenképp érdemes a nehezebb utat is megismerni arra az esetre, ha egy nap valami igazán indokolná azt.
Előkészület
Ami tuti, hogy root jogot kell szerezni: sudo su
Mivel nem mindegyik módszer hozza létre a mysql felhasználót, ezt már az elején mindenki végezze el!
useradd -r -g mysql mysql
A könnyű út
Ezt a részt azoknak szánom, akik annyira irtóznak a fordítástól, hogy mindenképpen elkerülnék azt.
MySQL telepítése Debian tárolóból
Ha csak egy verzióra volna szükség, nem csak könnyebb, de járható út is lenne a tárolóból telepítés. Feltéve, hogy megfelel, ami a tárolóban megtalálható. Az ehhez szükséges procedúráról a Programok telepítése, törlése, frissítése Debian linuxon függelékben írtam. A pontos telepítés menete számtalan forrásból elérhető. Például:
MySQL Database Server Installation and Configuration in Debian vagy How to install MySQL on Ubuntu/Debian, mint a Google két első találata. Általában a mysql szervert és klienst is feltelepítjük. Így a jelenlegi verzióknak megfelelően így nézne ki a telepítés:
apt-get install mysql-server mysql-client libmysqlclient16
MySQL telepítése deb csomagból
Ezzel a módszerrel már két külön mappába telepíthetjük a két különböző MySQL verziót. Majd a konfigurációs fájlokban és különböző eszközökkel állítható a környezet. Egy ilyen telepítés menete a következő.
- A mysql.com/downloads/mysql oldal betöltése.
- Ha megfelel a legújabb verzió, akkor ez a lépés kihagyható. Egyéb esetben a "Looking for previous GA versions?" linkre kattintva a kívánt verziót is ki kell választani.
- Kiválasztjuk a "Debian Linux" platformot.
- A 32 vagy 64 bites verzió melletti ( az általam bemutatott tesztkörnyezetben 64 bites ) "Download" gombra kattintunk.
- A két óriási "Login" és "Sign up" gombtól nem megijedve, a bal alsó sarokba eldugott "No thanks, just start my download." linkre kattintunk, vagy ha csak az url érdekel a parancssori letöltéshez, a jobb egérgombra felugró menüből kimásoljuk az url-t vagy csak a link felett hagyva az egeret, az állapotsorból kilessük azt.
- A megszerzett url- alapján wget-tel letöltjük a fájlt a /opt/ mappába
cd /opt/
wget http://www.mysql.com/get/Downloads/MySQL-X.Y/mysql-X.Y.Z-debian6.0-x86_64.deb/from/http://cdn.mysql.com/ -O mysql-X.Y.Z.debAhol az X, Y és Z a verziószámokat helyettesítik a példában.
- Majd telepítjük
dpkg -i mysql-X.Y.Z.deb
- Belépünk a létrehozott telepítési könyvtárba
cd mysql/server-X.Y
- Jogokat állítunk:
chown -R mysql:mysql .
- Futtatjuk a mysql_install_db scriptet, ami létrehozza az adatbáziskönyvtárat
./scripts/mysql_install_db --user=mysql
- Ismét jogokat állítunk:
chown -R root .
chown -R mysql data . - Elindítjuk a mysql szervert:
./bin/mysqld_safe --user=mysql &
Ahol az & jel azért kell, hogy visszakapjuk a prompt-ot. A lefutása után egy ENTER-t még ütni kell. A prompt csak akkor jelenik meg újra. Ha & jel nélkül sikerült futtatni, akkor az ALT+F2 billentyűkombinációval új konzolra lehet váltani és folytatni a munkát. - Futtatjuk a mysql_secure_installation scriptet, ami a jelszót állítja és törli a teszt felhasználót
./bin/mysql_secure_installation --user=mysql
Először a jelenlegi jelszót kéri, ami nincs, tehát csak ENTER-t kell ütni. Majd követve az utasításokat jelszót lehet adni a root usernek, törölni a test adatbázist és tiltani a root user távoli bejelentkezését. Éles környezetre ez javasolt. Virtuális gépen, ahova csak helyi gépről lehet bejelentkezni, kevésbé fontos.
MySQL 5.6 telepítése forrásból
És most jön a kedvenc részem. A forrásból telepítés. Az 5.6 -os verzió a cmake-et használja a ./configure helyett, de a többi lépés nagyjából ugyanaz. Előbb viszont be kell szerezni a megfelelő mysql verziót. A fentebb írt módszer itt is alkalmazható a link megszerzéséhez. Majd pedig jöhet a mappa létrehozása és a letöltés:
mkdir mysql
cd mysql
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz/from/http://cdn.mysql.com/ -O mysql-5.6.10.tar.gz
tar xf mysql-5.6.10.tar.gz
cd mysql-5.6.10
A wget "-O" paramétere adja meg a fájl nevét a letöltés után.
Vannak azonban függőségei is a mysql-nek. Ezekről a következő oldalon lehet olvasni:
Source Installation System Requirements
A fordítás-ról és a cmake paraméterezéséről pedig a: MySQL Source-Configuration Options oldalon lehet olvasni.
Az ember hajlamos átugrani ezeket a részeket és nekiesni a telepítésnek. Ez is egy módszer. Nézzük, mi történik ilyenkor és hogy jövünk rá a baklövésünkre! Először is a fontosabb paramétereket nézzük meg:
- CMAKE_INSTALL_PREFIX: Telepítési könyvtár útvonala. / jel nem kell a végére.
- MYSQL_UNIX_ADDR: socket fájl. Ezt érdemes megadni, hogy ne próbálja a két mysql verzió ugyanazt a fájlt használni. Pl.: /tmp/mysql56.sock
- DEFAULT_CHARSET: Alap karakterkészlet
- DEFAULT_COLLATION: Az "egybevetés" típusa. Mint utf8_general_ci. Hogy a mysql miként kezelje a szűréskor és rendezéskor a karaktereket.
Tudni kell, hogy a cmake paraméterei előtt mindig egy "-D" található. Tehát egy teljes paraméter így néz ki: -DDEFAULT_CHARSET
Futtassuk az első próbálkozást!
-DCMAKE_INSTALL_PREFIX=/opt/mysql/5.6 \
-DMYSQL_UNIX_ADDR=/tmp/mysql56.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
2>cmake.log
A balra döntött per jel után közvetlenül csak entert üssünk! Ekkor a következő sorban folytatható a parancs. Nem szükséges így írni. Én csak itt használtam a formázás miatt. A 2>cmake.log miatt pedig a hibaüzenetek a cmake.log fájlba kerülnek.
A program leáll hibával. Pontosabban el sem indul, mert nem telepítettük a cmake programot. Tegyük meg:
apt-get install cmake
Futassuk újra a cmake -et a paraméterekkel! A program ismét leáll. A hibanaplóban pedig az NCURSES szöveg fedezhető fel, ami arra utal, hogy nincs feltelepítve a libncurses csomag. Itt még pontos utasítás is található a log fájlban, hogy melyk csomagot kell feltenni. Tegyük fel:
apt-get install libncurses5-dev
Célszerű törölni a cmake cache fájlját, ha hiba történik. Ugyanis enélkül előfodulhat, hogy a hiba már rég javítva van, de ezt a cmake még nem veszi észre.
rm CMakeCache.txt
Futassuk újra a cmake-et a paraméterekkel! Most a hibanapló a CMAKE_CXX_COMPILER-NOTFOUND -ot tartalmazza, ami jelzi, hogy nincs feltéve a g++ fordító. Pótoljuk:
apt-get install g++
Cache törlése
rm CMakeCache.txt
Újra próbálkozhatunk a cmake-kel. Ekkor már csak ennyi lesz a naplóban:
Warning: Biison executable not found in PATH
Habár csak azt írja, hogy nem találja az útvonalat, valójában fel sincs telepítve. Valójában enélkül is sikeresnek tűnik a telepítés, de jobban szeretem a teljesen tökéletes telepítést. Hát tegyük fel a bison-t!
apt-get install bison
Cache törlés
rm CMakeCache.txt
Futtassuk most újra a cmake-et, és most már minden rendben lesz. A többi függőség eleve adott a Debian-ban. Ez után jön a tényleges fordítás:
make
Nálam ez durván 30 percig futott, úgyhogy nyugodtan lehet szusszanni egyet. Ha végzett, akkor a telepítés a választott könyvtárba:
make install
Ez már úgy 1 perc csak.
Egy korábbi művelettel felkerült a /etc mappába egy mysql mappa, amiben már van egy my.cnf. Ezt töröljük ki, hogy ne zavarjon be az új, verziófüggő beállításoknál.
rm -R /etc/mysql
Most át lehet lépni a telepített mysql könyvtárába és a következő utasításokkal megfelelő jogosultságokkal végezzük el a fő adatbázisok telepítését, majd idítsuk a szervert!
chown -R mysql:mysql .
./scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
./bin/mysqld_safe --user=mysql &
Az utolsó sor elindítja a mysql szervert. Most viszont még el kell végezni pár beállítást. Például a root felhasználó jelszócseréjét, stb...
./bin/mysql_secure_installation --user=mysql
A következő döntéseken vezet végig:
Enter current password for root (enter for none):
Kéri a jelenlegi jelszót. Az nincs, tehát nem csoda, hogy nem emlékszel. Csak simán ENTER gombot kell nyomni.
Set root password? [y/n]
Beállítjuk a root jelszót? Naná... Nyomjunk "y" -t, majd ENTER.
New password:
Adjuk meg a jelszót. Pl.: "password" ( idézőjel nélkül ), majd enter. A jelszó nem fog megjelenni a képernyőn, de attól még sikerült beírni.
Re-enter new password:
Ismét be kell írni a jelszót. Ismét password.
Remove anonymous users? [y/n]
Törüljük az anonymous felhasználókat? Igen. Nyomjunk ismét "y" -t.
Disallow root login remotely? [y/n]
Tiltsuk a root felhasználó távoli bejelentkezését? Ezt éles helyzetben célszerű megtenni. Itt viszont, aki egy gépről elérhető virtuális gépre telepítette a mysql-t, nem szükséges. Sőt, jól jön, ha távolról is be lehet jelentkezni például MySQL Workbench -csel. Tehát itt nyomjunk "n" betűt.
Remove test database and access to it? [y/n]
A teszt adatbázis törlésére kérdez rá. Itt is lehet "y" -t válaszolni.
Reload privilege tables now? [y/n]
A jogosultságok érvénybelépéséhez azokat újra kell tölteni. Itt erre kérdez rá. Nyomjunk ismét "y"-t!
Ezzel a telepítéssel végeztünk, ám egy dolog még hátravan. Mivel két mysql verzió lesz telepítve, így a mysql-t kössük egy fix IP címhez. A virtuális gépnek két IP lett beállítva, így mindkettő különböző IP-n futhat.
Állítsuk le a szervert:
./bin/mysqladmin shutdown -p
Be kell írni a jelszót. Majd pedig:
nano my.cnf
A [mysqld] rész után új sorba írjuk ezt: bind-address = 192.168.56.2
Majd indítsuk el újra a szervert:
./bin/mysqld_safe --user=mysql
Most már lehet megpróbálni belépni a mysql kliensbe.
./bin/mysql -u root -p
Amit még el kell végezni, az a root user távoli bejelentkezéséhez szükséges jogosultság. Miután a mysql prompt -ba bejutottunk, a következőt kell futtatni szigorúan pontossvesszővel zárva!
flush privileges;
grant all on *.* to 'root'@'192.168.56.2' identified by 'password';
flush privileges;
Azért ezt a két IP-t kell megadni, mert a 192.168.56.1 -est fogja látni a virtuális gép a gazda gépről való csatlakozáskor. Viszont ha magáról a gazda gépről csatlakozunk, akkor a 192.168.56.2-as IP-t. Ha valaki más beállításokat használt, az IP eltérő lehet.
Kilépés exit;-tel vagy \q -val lehetséges
Hogy az indításon kicsit egyszerűsítsünk, használhatjuk a mysql által nyújtott indító szkriptet, ami ezzel a telepítéssel a "support-files" mappába került. Másoljuk át a "bin" könyvtárba!
Ez után az indítás:
A leállítás
Ezzel az 5.6 telepítésével végeztünk is. Már csak az 5.1 van hátra.
MySQL 5.1 telepítése forrásból
Az 5.1 -es verziót a ./configure paranccsal kell előkészíteni. A paraméterei a
MySQL Source-Configuration Options oldalon találhatók a függőségek pedig a Installing MySQL from Source oldalon. Itt leginkább csak egy dolog hiányozhat, és az a libtool. Tegyük fel tehát:
apt-get install libtool
Majd jöhet a letöltés, mappába lépés, majd a telepítés megkezdése:
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.68.tar.gz/from/http://cdn.mysql.com/ -O mysql-5.1.68.tar.gz
tar xf mysql-5.1.68.tar.gz
cd mysql-5.1.68
Fontosabb paraméterek:
- --prefix: telepítési könyvtár
- --with-unix-socket-path: socket fájl útvonala
- --with-charset: Alap karakterkódolás
- --with-collation: "Egybevetés" típusa
- --with-plugins: Pluginokkal együtt fordításhoz. Az InnoDB tároló motor ennél a verziónál nem települ magától. Ezzel a paraméterrel viszont megadhatjuk az innobase értéket az InnoDB-hez.
Tehát így néz ki a ./configure utasítás
--prefix=/opt/mysql/5.1 \
--with-unix-socket-path=/tmp/mysql51.sock \
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-plugins=innobase
Miután végzett, jöhet a make és a make install. A make után megint sokat kell majd várni.
make install
Most lépjünk be a telepítési könyvtárba és végezzük el az 5.6-nál megismert beállításokat, de figyelve arra, hogy itt nem teljesen ugyanazok a könyvtárak. Például a mysql_install_db nem a scripts, hanem a bin mappában van.
chown -R mysql:mysql .
./bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
cp ./share/mysql/my-small.cnf ./my.cnf
nano my.cnf
Szerkesszük a my.cnf fájlt és a [mysqld] után a következő sorba írjuk, hogy
bind-address = 192.168.56.3
Ez ugyanis az IP alias. Majd indulhat a szerver
./bin/mysqld_safe --user=mysql &
Utána nyomjunk egy ENTER-t, hogy visszajöjjön a prompt. Majd pedig:
./bin/mysql_secure_installation --user=mysql
Ez után jöhet a távoli elérést biztosító mysql jogosultság a root felhasználónak.
Ez megegyezik az 5.6-nál használttal:
./bin/mysql -u root -p
flush privileges;
grant all on *.* to 'root'@'192.168.56.3' identified by 'password';
flush privileges;
Ennél a telepítésnél az indító szkript a "share/mysql" mappába került. Másoljuk át a "bin" könyvtárba!
Ez után az indítás:
A leállítás
Ezzel pedig elkészült az 5.1 -es verzió is. Az Apache-nál használt módszerrel itt is adhatunk új domaineket az IP-khez, de akár az apache-ok domainjeit is lehet használni. Ekkor az 5.1-es MySQL szerver domainje a22.vm1 lenne, míg az 5.6 -osé az a24.vm1. Én létrehoztam egy m51.vm1 -et az 5.1 -esnek és egy m56.vm1 -et az 5.6-osnak. Így távoli bejelentkezésnél ezt adhatom meg.
Elérkeztünk a fejezet végére. Remélem, mindenki számára kielégítő volt az információ, amivel szolgálni tudtam és ez pedig titeket fog jól szolgálni.
A biztonság kedvéért készítsünk ezúttal is egy exportot a virtuális gép állapotáról, most wtk-vm1-v4 néven!
Hozzászólások
Tudod hogyan lehet utólag
Tudod hogyan lehet utólag átnevezni a MySQL-t?
pl. az alapértelmezett mysqld -ről mysqld579 -re?
5.7.6 verziótól lehetőség van fordításkor megadni a -DSYSTEMD_SERVICE_NAME=value kapcsolóval, de ez elmaradt
( illetve ennél korábbi verziónál pl 5.5.xx se ártana ilyen megoldás )
Talán symlink
Sajnos 5.7-hez még nem volt szerencsém. Jó, ha már ilyen is van benne, de hogy utólag hogyan lehet átnevezni, arra csak tippem van. Ha magad fordítod a mysql-t, akkor jobb is a helyzet, mert olyan mappába rakod, amilyenbe akarod. És egy helyen van minden. Ha erre a programra nem hivatkozik más, akkor akár simán át is lehetne nevezni vagy kivenni a PATH-ból (esetleg törölni, ha eleve symlink volt) és új symlinket készíteni erre a fájlra.
Ha viszont más programok, szkriptek is hivatkoznak rá ezen a néven, akkor azokon belül is át kellene nevezni. Nem tudom, hogy az általad írt változó mit befolyásol. Hány helyen lesz felhasználva. De mivel az 5.7-et még nem próbáltam és ez a lehetőség is új infó volt nekem, ez az átnevezés, újralinkelés ötletem van csak amellett, hogy a fájlok tartalmában is keresnék, hivatkozik-e még rá valami. Persze ezt nem biztos, hogy meg merném kockáztatni egy éles rendszeren. Talán létezik jobb megoldás.