Skip to main content

Installer MySQL sous Unix / Linux

Résolution des dépendances

MySQL dépend de la bibliothèque libaio. L'initialisation du répertoire de données et les étapes de démarrage du serveur suivantes échoueront si cette bibliothèque n'est pas installée localement.

pilou@lubuntu:~$ sudo apt-get install libaio1 [sudo] password for pilou: Reading package lists...
Done Building dependency tree Reading state information... 
Done libaio1 is already the newest version (0.3.111-1). 
libaio1 set to manually installed. 0 upgraded, 0 newly installed, 0 to remove and 68 not upgraded. 

Télechargement de decompression de l'archive

Pour installer une distribution binaire de fichier tar compressée, décompressez-la à l'emplacement d'installation de votre choix.

pilou@lubuntu:~$ mkdir mysql80

pilou@lubuntu:~$ cd mysql80

pilou@lubuntu:~/mysql80$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar --2018-12-30 18:10:42--

https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar Resolving dev.mysql.com (dev.mysql.com)...

137.254.60.11 Connecting to dev.mysql.com (dev.mysql.com)|137.254.60.11|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar [following] --2018-12-30 18:10:48-- https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar Resolving cdn.mysql.com (cdn.mysql.com)... 23.210.41.222 Connecting to cdn.mysql.com (cdn.mysql.com)|23.210.41.222|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 472883200 (451M) [application/x-tar] Saving to: ‘mysql-8.0.13-linux-glibc2.12-x86_64.tar’

mysql-8.0.13-linux-glib 100%[===============================>] 450,98M 6,86MB/s in 72s

2018-12-30 18:12:01 (6,22 MB/s) - ‘mysql-8.0.13-linux-glibc2.12-x86_64.tar’ saved [472883200/472883200]

pilou@lubuntu:~/mysql80$ ls mysql-8.0.13-linux-glibc2.12-x86_64.tar 


L'archive contient le serveur MySQL, l'outil MySQL Router ainsi qu'un banc de test pour MySQL.

<source lang='bash'>

pilou@lubuntu:~/mysql80$ tar xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz mysql-test-8.0.13-linux-glibc2.12-x86_64.tar.xz 
pilou@lubuntu:~/mysql80$ tar xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz 
pilou@lubuntu:~/mysql80$ ls mysql-8.0.13-linux-glibc2.12-x86_64 bin include LICENSE man README.router support-files docs lib LICENSE.router README share

 

L'archive une fois decompresser contient:

  • bin binaire mysqld, et outils client
  • docs Documentation
  • man Documentation
  • include fichier de developpement
  • lib fichier de developpement
  • share Fichiers partagé par les bases MySQL
  • support-files fichier support

NB: A ce niveau il n'y a pas de repertoire data qui a été crée.

Sous ubuntu, faire

cd /usr/lib/x86_64-linux-gnu
sudo ln -s libtinfo.so.6 libtinfo.so.5

Le répertoire bin contient:

<source lang='bash'>

pilou@lubuntu:

pilou@pilou-pc:~/mysql80$Formation/mysql-8.0.20-linux-glibc2.12-x86_64$ ls
-albin  mysql-8.0.13-linux-glibc2.12-x86_64/bin/docs  totalinclude  1669576lib  drwxrwxr-xLICENSE  2man  pilouREADME  piloushare  4096support-files
déc. 30 18:22 . drwxrwxr-x 9 pilou pilou 4096 déc. 30 18:22 .. -rwxr-xr-x 1 pilou pilou 12327800 oct. 7 13:14 ibd2sdi -rwxr-xr-x 1 pilou pilou 10789272 oct. 7 13:14 innochecksum lrwxrwxrwx 1 pilou pilou 25 oct. 7 13:31 libcrypto.so.1.0.0 -> ../lib/libcrypto.so.1.0.0 lrwxrwxrwx 1 pilou pilou 22 oct. 7 13:31 libssl.so.1.0.0 -> ../lib/libssl.so.1.0.0 -rwxr-xr-x 1 pilou pilou 8660248 oct. 7 13:03 lz4_decompress -rwxr-xr-x 1 pilou pilou 13400456 oct. 7 13:14 myisamchk -rwxr-xr-x 1 pilou pilou 12581304 oct. 7 13:14 myisam_ftdump -rwxr-xr-x 1 pilou pilou 12081304 oct. 7 13:14 myisamlog -rwxr-xr-x 1 pilou pilou 12722904 oct. 7 13:15 myisampack -rwxr-xr-x 1 pilou pilou 9156752 oct. 7 13:03 my_print_defaults -rwxr-xr-x 1 pilou pilou 12429096 oct. 7 13:15 mysql -rwxr-xr-x 1 pilou pilou 11091464 oct. 7 13:16 mysqladmin -rwxr-xr-x 1 pilou pilou 16253096 oct. 7 13:16 mysqlbinlog -rwxr-xr-x 1 pilou pilou 11337112 oct. 7 13:16 mysqlcheck -rwxr-xr-x 1 pilou pilou 5039 oct. 7 13:01 mysql_config -rwxr-xr-x 1 pilou pilou 9338952 oct. 7 13:16 mysql_config_editor -rwxr-xr-x 1 pilou pilou 759831680 oct. 7 13:24 mysqld -rwxr-xr-x 1 pilou pilou 644832912 oct. 7 12:56 mysqld-debug -rwxr-xr-x 1 pilou pilou 26859 oct. 7 13:01 mysqld_multi -rwxr-xr-x 1 pilou pilou 29815 oct. 7 13:01 mysqld_safe -rwxr-xr-x 1 pilou pilou 11495008 oct. 7 13:16 mysqldump -rwxr-xr-x 1 pilou pilou 7855 oct. 7 13:01 mysqldumpslow -rwxr-xr-x 1 pilou pilou 11092032 oct. 7 13:16 mysqlimport -rwxr-xr-x 1 pilou pilou 20749160 oct. 7 13:17 mysqlpump -rwxr-xr-x 1 pilou pilou 937568 oct. 7 13:19 mysqlrouter -rwxr-xr-x 1 pilou pilou 564000 oct. 7 13:02 mysqlrouter_plugin_info -rwxr-xr-x 1 pilou pilou 11036160 oct. 7 13:16 mysql_secure_installation -rwxr-xr-x 1 pilou pilou 11049944 oct. 7 13:16 mysqlshow -rwxr-xr-x 1 pilou pilou 11154216 oct. 7 13:16 mysqlslap -rwxr-xr-x 1 pilou pilou 9581808 oct. 7 13:03 mysql_ssl_rsa_setup -rwxr-xr-x 1 pilou pilou 8607032 oct. 7 13:14 mysql_tzinfo_to_sql -rwxr-xr-x 1 pilou pilou 19960296 oct. 7 13:17 mysql_upgrade -rwxr-xr-x 1 pilou pilou 9763112 oct. 7 13:14 perror -rwxr-xr-x 1 pilou pilou 9152560 oct. 7 13:03 resolveip -rwxr-xr-x 1 pilou pilou 9215024 oct. 7 13:03 resolve_stack_dump -rwxr-xr-x 1 pilou pilou 8296768 oct. 7 13:03 zlib_decompress

</source>

 

Initialisation de mysql

 

L'initialisation de MySQL permet de créer le repertoire data et de créer un utilisateur root

<source lang='bash'> pilou@lubuntu:

pilou@pilou-pc:~/mysql80/Formation/mysql-8.0.13-20-linux-glibc2.12-x86_64$ ./bin/mysqld --defaults-file=simplemy.ini  --console --initialize
2018-pilou@pilou-pc:~/Formation/mysql-8.0.20-linux-glibc2.12-30T17:26:26.550199Zx86_64$ 0./bin/mysqld --defaults-file=simplemy.ini  --console 

 

Le fichier ini étant:

[mysqld]
basedir=/home/pilou/Formation/mysql-8.0.20-linux-glibc2.12-x86_64
datadir=/home/pilou/Formation/simpleinit/data
log-error=/home/pilou/Formation/simpleinit/mysqld.log

Dans le fichier de log on retrouve le mot de passe de l'administrateur:

2020-05-11T21:03:21.864864Z 1 [System] [MY-013169]013577] [Server]InnoDB] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqldInnoDB (mysqldinitialization 8.0.13)has initializingended.
of2020-05-11T21:03:23.439599Z server in progress as process 4352 2018-12-30T17:26:29.807428Z 56 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hKh1PVfI_uUie;ActH??b0Es
2018-12-30T17:26:32.088238Z2020-05-11T21:03:33.232344Z 0 [System] [MY-013170]010116] [Server] /home/pilou/mysql80/Formation/mysql-8.0.13-20-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.13)20) initializing of server has completed pilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$ ls bin data docs include lib LICENSE LICENSE.router man README README.router share support-files </source>

pilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$
 ./bin/mysqld --initialize 2018-12-30T17:26:26.550199Z 0 [System] [MY-013169] [Server]
 /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.13) initializing of server in progressstarting as process 435213368
2018-12-30T17:26:29.807428Z 5 [Note] [MY-010454] [Server] 
 A temporary password is generated for root@localhost: hKh1PVfI_uUi 2018-12-30T17:26:32.088238Z 0 
 [System] [MY-013170] [Server] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.13) initializing of server has completed pilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$ ls bin data docs include lib LICENSE LICENSE.router man README README.router share support-files

Le repertoire data contient outre des certificats de connexion, le repertoire de donnée InnoDB (principal storage engine) et les log binaires d'InnoDB <source lang='bash'> ilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$ ls data/

auto.cnf client-key.pem ib_logfile1 performance_schema server-key.pem
ca-key.pem ib_buffer_pool '#innodb_temp' private_key.pem sys
ca.pem ibdata1 mysql public_key.pem undo_001
client-cert.pem ib_logfile0 mysql.ibd server-cert.pem undo_002

</source>

DémarrageTest de MySQL

Le demarrage se fait simplement en invoquant mysqld ici avec la sortie sur la console <source lang="bash"> pilou@lubuntu:~/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64$ ./bin/mysqld --console 2018-12-30T17:36:26.889093Z 0 [System] [MY-010116] [Server] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.13) starting as process 4836 2018-12-30T17:36:27.406447Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2018-12-30T17:36:27.428554Z 0 [System] [MY-010931] [Server] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld: ready for connections. Version: '8.0.13' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Server - GPL. 2018-12-30T17:36:27.557684Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '::' port: 33060 </source>

Il est possible de se connecter au serveur avec l'outil cli mysql en utilisant l'utilisateur root et le mot de passe donnée précédemment <source lang="bash">

</source>

pilou@lubuntu:~$ mysql -S /tmp/mysql.sock -u root -p 
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.13

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>

 


Post Installation

La première chose a faire est de changer le password du root en utilisant l'outil mysql

 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'piloupilou'; Query OK, 0 rows affected (0.04 sec)

mysql> quit

Pour arreter le serveur, l'outil cli mysqladmin permet de demander l'arret du serveur

<source lang='bash'>

 /bin/mysqladmin -h localhost -u root -p shutdown

</source>

Coté serveur cela donne

<source lang='bash'>

2018-12-31T17:01:56.370223Z 15 [System] [MY-013172] [Server] Received SHUTDOWN from user root.

Shutting down mysqld (Version: 8.0.13). 2018-12-31T17:01:58.440304Z 0 [Warning] [MY-010909] [Server] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld: Forcing close of thread 11 user: 'root'. 2018-12-31T17:01:59.817494Z 0 [System] [MY-010910] [Server] /home/pilou/mysql80/mysql-8.0.13-linux-glibc2.12-x86_64/bin/mysqld: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL. </source>


Création d'un fichier ini de base

Sur le serveur, dans le repertoire de mysql, on va créer un fichier my.cnf minimaliste afin de setter quelques variable

 

[mysqld] 
port = 3306 
socket = /tmp/mysql.sock skip-external-locking 
key_buffer_size = 16K 
max_allowed_packet = 1M 
table_open_cache = 4 
sort_buffer_size = 64K 
read_buffer_size = 256K 
read_rnd_buffer_size = 256K 
net_buffer_length = 2K 
thread_stack = 128K