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!