Portál AbcLinuxu, 4. května 2025 11:47
Nedávno jsem řešil úkol jak spustit novejší verzi MySQL na produkčním serveru, na kterém už aktivně beží starší verze MySQL. Jinýmy slovy: Aby na jednom stroji byly spuštěny dvě verze MySQL. V repozitářích distribuce Debian squeeze (6.0.2) se aktualně nejnovejší verze MySQL (5.6.11) nenachází. Takže si ji stáhneme ze stránek a budeme kompilovat.
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.11.tar.gz/from/http://cdn.mysql.com/ tar xzvf mysql-5.6.11.tar.gz cd mysql-5.6.11
Já musel ještě doinstalovat následující balíčky:
apt-get install cmake make gcc g++ libncurses-dev
Poté zavoláme cmake
s parametry a následně přeložíme. Více informací zde.
cmake . -DMYSQL_TCP_PORT=3356\ -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld-5.6.sock \ -DCMAKE_INSTALL_PREFIX=/opt/mysql-5.6.11 make make install
Jako vlastníka adresáře nastavíme uživatele mysql
cd /opt/mysql-5.6.11/ chown -R mysql . chgrp -R mysql .
Poznámka: basedir
a datadir
by měl vlastnit uživatel mysql
. Uživatel mysql
byl vytvořen při dřívější instalaci MySQL serveru z repozitáře.
Pokud chcete zachovat podobné nastavení jako běžící verze MySQL tak si zkopírujte my.cnf
cp /etc/mysql/my.cnf .
a poté upravte všechny výskyty port
, socket
, pid-file
, basedir
, datadir
a language
vim /opt/mysql-5.6.11/my.cnf
socket = /var/run/mysqld/mysqld-5.6.sock
pid = /var/run/mysqld/mysqld-5.6.pid
port = 3356
basedir = /opt/mysql-5.6.11
datadir = /opt/mysql-5.6.11/data
language = /opt/mysql-5.6.11/share/english
Nyní nainstalujeme databázi za pomocí scriptu:
scripts/mysql_install_db --defaults-file=/opt/mysql-5.6.11/my.cnf \ --user=mysql \ --datadir=/opt/mysql-5.6.11/data/ \ --basedir=/opt/mysql-5.6.11/
Poznámka: --defaults-file musí být vždy jako první parametr.
Vše by mělo proběhnout v pořádku a na závěr výpisu by se měla objevit OK hláška a text, který Vás nabádá na nastavení hesla.
Databázi spustíme následujícím příkazem:
bin/mysqld_safe --user=mysql &
Poté spustíme průvodce, který nám usnadní první nastavení.
/opt/mysql-5.6.11/bin/mysql_secure_installation
Tak a to je vše. Nyní na serveru beží dvě MySQL databáze různých verzí.
Chceme-li spouštět databázi při startu nakopírujeme připravený script do /etc/init.d
cp support-files/mysql.server /etc/init.d/mysql-5.6
Nezapomeneme nastavit run levely při kterých se bude databáze spouštět příkazem
update-rc.d mysql-5.6 defaults
a nebo použitím nástroje rcconf
Poznámky
pokud uvidíte chybu:
insserv: script mysql-5.6: service mysql already provided!
insserv: exiting now!
update-rc.d: error: insserv rejected the script header
tak stačí upravit řádek 18 v souboru /etc/init.d/mysql-5.6
# Provides: mysql
na
# Provides: mysql-5.6
Vzdálený přístup k MySQL
Pokud chcete povolit připojení vzdaleného uživatele je třeba nastavit adresu serveru v /opt/mysql-5.6.11/my.cnf
bind-address = 0.0.0.0 #IP adresa serveru
a také vytvořit uživatele s oprávněním přistupovat z jakékoli IP
Vytvoření uživatele s možností vzdáleného připojení
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
Doufám, že článek někomu někdy pomůže při řešení podobného problému.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.