W tym artykule omówimy instalację binarnego tarballa MySQL. Omówimy instalację MySQL 8 przy użyciu binarnych paczek i zainstalujemy MySQL 8 na CentOS 7 przy użyciu binarnych paczek. Instalacja oparta na binarnych plikach tarball ma swoje wady i zalety, przejdziemy przez to. Instalacja z binarnych tarballi jest niezależna od dystrybucji Linuksa lub systemu init, z którego korzysta dystrybucja. Oznacza to, że ta sama metoda instalacji działa na przykład w systemach opartych na RPM i martwych, ale będzie działać również w bardziej egzotycznych dystrybucjach, takich jak Gen 2. Dostępna jest również binarna paczka dla systemu macOS, a procedura instalacji nie różni się zbytnio, ta metoda wymaga bardziej ręcznego słowa. Skrypt mysql_install_db był przestarzały w MySQL 5.7 i został usunięty z MySQL 8. Wstępne utworzenie bazy danych można wykonać za pomocą polecenia mysqld –initialize. Teraz, gdy zainstalujemy MySQL ręcznie, użyjemy polecenia mysqld –initialize, aby utworzyć pustą bazę danych.
Najpierw zróbmy trochę porządków. Usuniemy bardzo starą wersję mariadb-libs, która dostarcza my.cnf, która byłaby w konflikcie z naszym.
Usuń biblioteki Mariadb:
[[email protected] ~]# sudo yum remove -y mariadb-libs
Pobierz archiwum źródłowe ankiety społeczności MySQL 8.0
[[email protected] ~]# curl -L -O https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 100 575M 100 575M 0 0 7726k 0 0:01:16 0:01:16 --:--:-- 8516k
[[email protected] ~]# ll -rw-r--r--. 1 root root 603019898 Jul 23 10:31 mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
Plik tar nie został pobrany, więc rozpakujmy go do usr/local
[[email protected] ~]# sudo tar xvfz mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
Wypełnianie wymagań wstępnych
zainstalujmy libaio.
[[email protected] ~]# sudo yum -y install libaio
Create a MySQL group, this is normally done by the packages but because we are installing it manually from binary tarball now we need to do it.
[[email protected] ~]# sudo groupadd mysql
Stwórzmy użytkownika MySQL, którego
[[email protected] ~]# sudo useradd -r -g mysql -s /bin/false mysql
sprawdź, czy użytkownik mysql jest tam
[[email protected] ~]# getent passwd | grep mysql mysql:x:988:1001::/home/mysql:/bin/false
dostałem /usr/local i utwórz dowiązanie symboliczne, a następnie sprawdź
[[email protected] ~]# cd /usr/local [[email protected] local]# sudo ln -s mysql-8.0.11-linux-glibc2.12-x86_64 mysql [[email protected] local]# ls -la mysql lrwxrwxrwx. 1 root root 35 Jul 23 15:08 mysql -> mysql-8.0.11-linux-glibc2.12-x86_64
utwórz katalog plików MySQL, który będzie przechowywał własność zestawu danych i uprawnienia, stojąc w /usr/local/
[[email protected] local]# sudo mkdir mysql-files [[email protected] local]# sudo chown mysql:mysql mysql-files [[email protected] local]# sudo chmod 750 mysql-files
Zainicjuj MySQL
Przejdź do katalogu mysql i zainicjuj mysqld, we wcześniejszych wersjach nazywało się to mysql_installed_db
[[email protected] local]# cd mysql [[email protected] mysql]# sudo ./bin/mysqld --initialize --user=mysql 2020-07-23T12:12:10.028247Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.11-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.11) initializing of server in progress as process 25014 2020-07-23T12:12:15.470538Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: Hqn+jK6lfzNS 2020-07-23T12:12:18.875370Z 0 [System] [MY-013170] [Server] /usr/local/mysql-8.0.11-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.11) initializing of server has completed
Zauważ, że generowane jest tymczasowe hasło roota, które w moim przypadku to ([email protected]:Hqn+jK6lfzNS)
Skopiuj skrypt startowy z plików wsparcia do /etc/init.d
[[email protected] mysql]# sudo cp ./support-files/mysql.server /etc/init.d/
uruchom serwer mysql z plikiem startowym, który właśnie skopiowaliśmy
[[email protected] mysql]# sudo /etc/init.d/mysql.server start Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'. . SUCCESS!
Teraz połącz ro mysql, podając tymczasowe hasło wygenerowane wcześniej
[[email protected] mysql]# ./bin/mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.11 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Zmieńmy tymczasowe hasło dla użytkownika root.
mysql> alter user 'root'@'localhost' identified by 'My_root_pass1!'; Query OK, 0 rows affected (0.07 sec)
Sprawdź lokalizację pliku gniazda:
mysql> show variables like 'socket'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | socket | /tmp/mysql.sock | +---------------+-----------------+ 1 row in set (0.01 sec)
Aby uniknąć konieczności wpisywania nazwy ścieżki programów klienckich zawsze podczas pracy z MySQL, możesz dodać katalog /usr/local/mysql/bin do swojej zmiennej PATH:
[[email protected] mysql]# export PATH=$PATH:/usr/local/mysql/bin
[[email protected] mysql]# ps -ef | grep mysql root 25130 1 0 15:16 pts/1 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid mysql 25215 25130 1 15:16 pts/1 00:00:42 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=localhost.localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid root 26171 21375 0 16:21 pts/1 00:00:00 mysql -uroot -px xxxxxxxxxxxx root 26191 25365 0 16:23 pts/2 00:00:00 grep --color=auto mysq