In questo articolo, discuteremo dell'installazione di MySQL tarball binario. Discuteremo l'installazione di MySQL 8 usando tarball binari e installeremo MySQL 8 su CentOS 7 usando tarball binari. L'installazione basata su tarball binari ha i suoi pro e contro, lo esamineremo. L'installazione da tarball binari è indipendente dalla distribuzione Linux o dal sistema init utilizzato dalla distribuzione. Ciò significa che lo stesso metodo di installazione funziona su RPM e sistemi dead based, ad esempio, ma funzionerà anche su distribuzioni più esotiche come Gen 2. È disponibile anche un tarball binario per macOS e la procedura di installazione non è molto diversa, questo metodo richiede una parola più manuale. Lo script mysql_install_db è stato deprecato in MySQL 5.7 ed è stato rimosso da MySQL 8. La creazione iniziale del database può essere eseguita con il comando mysqld –initialize. Ora che installeremo MySQL manualmente, useremo il comando mysqld –initialize per creare un database vuoto.
Per prima cosa facciamo un po' di pulizia. Rimuoveremo la versione molto vecchia di mariadb-libs che fornisce my.cnf che sarebbe in conflitto con la nostra.
Rimuovi librerie Mariadb:
[example@sqldat.com ~]# sudo yum remove -y mariadb-libs
Scarica il tarball sorgente di MySQL Community Survey 8.0
[example@sqldat.com ~]# 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
[example@sqldat.com ~]# ll -rw-r--r--. 1 root root 603019898 Jul 23 10:31 mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
Il tarball non è stato scaricato, quindi scompattiamolo in usr/local
[example@sqldat.com ~]# sudo tar xvfz mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
Completamento dei prerequisiti
installiamo libaio.
[example@sqldat.com ~]# 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.
[example@sqldat.com ~]# sudo groupadd mysql
Creiamo un utente MySQL per te
[example@sqldat.com ~]# sudo useradd -r -g mysql -s /bin/false mysql
verifica che l'utente mysql sia presente
[example@sqldat.com ~]# getent passwd | grep mysql mysql:x:988:1001::/home/mysql:/bin/false
ottenuto /usr/local e creare un collegamento simbolico e quindi controllarlo
[example@sqldat.com ~]# cd /usr/local [example@sqldat.com local]# sudo ln -s mysql-8.0.11-linux-glibc2.12-x86_64 mysql [example@sqldat.com local]# ls -la mysql lrwxrwxrwx. 1 root root 35 Jul 23 15:08 mysql -> mysql-8.0.11-linux-glibc2.12-x86_64
crea la directory dei file MySQL che manterrà la proprietà e le autorizzazioni del set di dati mentre si trova in /usr/local/
[example@sqldat.com local]# sudo mkdir mysql-files [example@sqldat.com local]# sudo chown mysql:mysql mysql-files [example@sqldat.com local]# sudo chmod 750 mysql-files
Inizializza MySQL
Vai alla directory mysql e Inizializza mysqld, nelle versioni precedenti era chiamato mysql_installed_db
[example@sqldat.com local]# cd mysql [example@sqldat.com 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 example@sqldat.com: 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
Nota che viene generata la password di root temporanea che nel mio caso è (esempio@sqldat.com:Hqn+jK6lfzNS)
Copia lo script init dai file di supporto in /etc/init.d
[example@sqldat.com mysql]# sudo cp ./support-files/mysql.server /etc/init.d/
avvia il server mysql con il file init che abbiamo appena copiato
[example@sqldat.com mysql]# sudo /etc/init.d/mysql.server start Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'. . SUCCESS!
Ora connettiti a mysql fornendo la passwd temporanea generata in precedenza
[example@sqldat.com 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>
Cambiamo la passwd temporanea per l'utente root.
mysql> alter user 'root'@'localhost' identified by 'My_root_pass1!'; Query OK, 0 rows affected (0.07 sec)
Controlla la posizione del file socket:
mysql> show variables like 'socket'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | socket | /tmp/mysql.sock | +---------------+-----------------+ 1 row in set (0.01 sec)
Per evitare di dover digitare sempre il nome del percorso dei programmi client quando si lavora con MySQL, è possibile aggiungere la directory /usr/local/mysql/bin alla variabile PATH:
[example@sqldat.com mysql]# export PATH=$PATH:/usr/local/mysql/bin
[example@sqldat.com 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