Mysql
 sql >> Database >  >> RDS >> Mysql

Configura MySQL 8 da Binary Tarball

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

No