Maison  >  Article  >  Opération et maintenance  >  Introduction détaillée à l'installation de MySQL 8.0 sur Linux (exemple de code)

Introduction détaillée à l'installation de MySQL 8.0 sur Linux (exemple de code)

不言
不言avant
2018-12-15 11:05:216716parcourir

Ce que cet article vous apporte est une introduction détaillée (exemple de code) sur l'installation de mysql 8.0 sur Linux. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Après un travail acharné pour télécharger le fichier mysql, nous pouvons démarrer l'installation de Mysql8.0.

Décompressez le fichier

// 解压文件生成两个xz格式的压缩文件
$ tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.13-linux-glibc2.12-x86_64.tar.xz
// 我们需要先删掉/移除原有文件,才可以继续解压,因为解压出来的.tar文件和.tar.xz文件重名
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar ../
xz -d mysql-router-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
// 为了方便查找,改个名字
mv mysql-8.0.13-linux-glibc2.12-x86_64.tar mysql8

Configuration de l'environnement

Nous avons besoin d'un processus MySQL dédié pour démarrer la gestion des utilisateurs et des autorisations :

// 创建mysql系统用户和用户组
useradd -r mysql
// 给予安装目录mysql权限
chown mysql:mysql -R mysql8

Configurez votre propre fichier de configuration mysql Comme j'ai plusieurs bibliothèques Mysql, je spécifie manuellement de nombreux paramètres :

[client]
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
default-character-set=utf8

[mysql]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
# 指定日志时间为系统时间
log_timestamps=SYSTEM
log-error=/home/work/lnmp/mysql8/log/mysql.err
# 指定字符集为utf8,因为mysql8.0中的默认字符集为utfmb4,会和其他程序引起兼容性问题
default-character-set=utf8

[mysqld]
basedir=/home/work/lnmp/mysql8/
datadir=/home/work/lnmp/mysql8/data/
socket=/home/work/lnmp/mysql8/tmp/mysql.sock
port=3306
user=mysql
log_timestamps=SYSTEM
collation-server = utf8_unicode_ci
character-set-server = utf8
# 指定默认认证的加密方式,mysql8.0中默认方式为caching_sha2_password,引起老版本兼容性问题
default_authentication_plugin= mysql_native_password

[mysqld_safe]
log-error=/home/work/lnmp/mysql8/log/mysqld_safe.err
pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysql.server]
basedir=/home/work/lnmp/mysql8
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

[mysqladmin]                                                                                                                                  
socket=/home/work/lnmp/mysql8/tmp/mysql.sock

Dans celui-ci, je précise le chemin du journal des erreurs. . Lors des opérations suivantes, si une erreur survient, en plus de vérifier l'erreur affichée sur le terminal, n'oubliez pas de consulter le journal des erreurs pour obtenir des informations détaillées.

Parce que j'ai spécifié certains fichiers, ils doivent être créés à l'avance :

mkdir log
touch log/mysql.err
touch log/mysqld_safe.err
mkdir tmp
chown mysql:mysql -R ../*

Initialisation de la base de données

Si nous n'initialisons pas, utilisez bin/ directement Mysqld_safe signalera une erreur au démarrage car nous devons initialiser l'environnement mysql. À ce stade, reportez-vous à l'article :

$ bin/mysqld --initialize --user=mysql --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data/
2018-12-13T06:15:03.159123Z 0 [System] [MY-013169] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 1190
2018-12-13T06:15:05.255817Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: !/7oy-u%(XfZ
2018-12-13T06:15:06.135143Z 0 [System] [MY-013170] [Server] /home/work/lnmp/mysql8/bin/mysqld (mysqld 8.0.13) initializing of server has completed

L'invite indique que nous avons créé l'utilisateur root et un utilisateur temporaire. mot de passe et l'initialisation est réussie.

Démarrer la base de données

A ce moment, selon la documentation officielle, nous utilisons la commande mysqld_safe pour démarrer :

$ bin/mysqld_safe
2018-12-13T06:16:58.604154Z mysqld_safe Logging to '/home/work/lnmp/mysql8/log/mysql.err'.
2018-12-13T06:16:58.629249Z mysqld_safe Starting mysqld daemon with databases from /home/work/lnmp/mysql8/data

Ouvrez la base de données

Le processus de base de données a été lancé, et nous pouvons utiliser la base de données mysql normalement dans le nouveau terminal :

$ ps aux | grep mysql 
root      2141  0.0  0.0 815844  5328 pts/0    S+   14:16   0:00 /bin/sh bin/mysqld_safe
mysql     2319  1.0  0.5 1997492 374448 pts/0  Sl+  14:16   0:00 /home/work/lnmp/mysql8/bin/mysqld --basedir=/home/work/lnmp/mysql8/ --datadir=/home/work/lnmp/mysql8/data --plugin-dir=/home/work/lnmp/mysql8//lib/plugin --user=mysql --log-error=/home/work/lnmp/mysql8/log/mysql.err --pid-file=/home/work/lnmp/mysql8/tmp/mysqld.pid --socket=/home/work/lnmp/mysql8/tmp/mysql.sock --port=3306
work     25258  0.0  0.0 105356   824 pts/1    S+   14:18   0:00 grep mysql

Mais lorsque vous utilisez directement la commande mysql, une erreur est signalée :

$ bin/mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Selon mysql.sock Pour expliquer sa fonction, on peut préciser le chemin mysql.sock :

bin/mysql -S /home/work/lnmp/mysql8/tmp/mysql.sock -h localhost -uroot -p
Enter password:

Changer le mot de passe initial

Toute commande que nous utilisons après l'ouverture de la base de données nous demandera de changer le mot de passe initial. Mot de passe temporaire :

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

Modifier le mot de passe :

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

Se reconnecter. et le nouveau mot de passe prendra effet.

Commande globale Link

Pour le moment, nous ne pouvons utiliser que le chemin /home/work/lnmp/mysql8/bin/mysql ou le chemin relatif pour appeler mysql. Le lien doit être Commande globale :

$ ln -s /home/work/lnmp/mysql8/bin/mysql /usr/bin/
$ ln -s /home/work/lnmp/mysql8/bin/mysql_safe /usr/bin/

Spécifier le fichier de socket

Dans la version 8.0, j'ai essayé de nombreuses méthodes pour modifier le socket par défaut interrogé par la commande mysql dans le chemin my.cnf, toujours sans succès, nous avons donc dû lier le fichier socket dans le chemin par défaut :

ln -s /home/work/lnmp/mysql8/tmp/mysql.sock /tmp/

Ensuite nous appellerons la commande mysql et aucune erreur ne sera signalée.

Redémarrer la base de données

Pendant le processus de débogage des paramètres, nous devrons peut-être redémarrer la base de données :

// 杀死进程,相当于停止
cat tmp/mysqld.pid | xargs kill
// 正常启动mysql
bin/mysqld_safe  --defaults-file=/home/work/lnmp/mysql8/my.cnf

Ajouter des utilisateurs & accorder des autorisations

Dans mysql8, j'ai créé un utilisateur et attribué une valeur, et le résultat était une erreur :

mysql > grant all privileges on *.* to root@localhost indentified by '123456';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'indentified by '123456'' at line 1

Selon les informations en ligne, c'est parce que Mysql8 sépare les opérations de création d'un compte et d'octroi des autorisations :

// 创建账户
create user '用户名'@'访问主机' identified by '密码';
// 赋予权限(修改权限时在后面加with grant option)
grant 权限列表 on 数据库 to '用户名'@'访问主机' ;
// 刷新权限
flush privileges;

Résumé

Après décompresser le fichier, créer l'utilisateur mysql et le groupe d'utilisateurs, configurer la configuration my.cnf fichier, modifiez les autorisations, initialisez et démarrez la base de données, ouvrez la base de données et modifiez le mot de passe initial, liant les commandes globales et spécifiant le chemin du fichier socket, tous les travaux d'installation sont terminés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer