MySQL telepítése Debian 6-ra

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!

groupadd mysql
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.deb

    Ahol 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:

cd /opt
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!

cmake . \
-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!

cd ../5.6
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!

grant all on *.* to 'root'@'192.168.56.1' identified by 'password';
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!

cp /opt/mysql/5.6/support-files/mysql.server /opt/mysql/5.6/bin/

Ez után az indítás:

/opt/mysql/5.6/bin/mysql.server start

A leállítás

/opt/mysql/5.6/bin/mysql.server stop

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:

cd /opt/mysql
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

./configure \
--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
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.

cd ../5.1
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

grant all on *.* to 'root'@'192.168.56.1' identified by 'password';
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!

cp /opt/mysql/5.1/share/mysql/mysql.server /opt/mysql/5.1/bin/

Ez után az indítás:

/opt/mysql/5.1/bin/mysql.server start

A leállítás

/opt/mysql/5.1/bin/mysql.server stop

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!

Kategóriák: 
Megosztás/Mentés

Hozzászólások

Anonymous képe

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 )

Rimelek képe

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.