Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Installationsmethode von MySQL 8.0 unter Linux (Codebeispiele). Ich hoffe, dass er für Sie hilfreich ist.
Nach etwas harter Arbeit zum Herunterladen der MySQL-Datei können wir mit der Installation von Mysql8.0 beginnen.
Entpacken Sie die Datei
// 解压文件生成两个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
Umgebungskonfiguration
Wir benötigen einen dedizierten MySQL-Prozess, um die Benutzer- und Berechtigungsverwaltung zu starten:
// 创建mysql系统用户和用户组 useradd -r mysql // 给予安装目录mysql权限 chown mysql:mysql -R mysql8
Konfigurieren Sie Ihre eigene MySQL-Konfigurationsdatei, ich gebe viele Parameter manuell an:
[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
Darin gebe ich den Pfad des Fehlerprotokolls an. Wenn ein Fehler auftritt, überprüfen Sie nicht nur den auf dem Terminal angezeigten Fehler, sondern überprüfen Sie auch das Fehlerprotokoll auf detaillierte Informationen.
Da ich einige Dateien angegeben habe, müssen sie im Voraus erstellt werden:
mkdir log touch log/mysql.err touch log/mysqld_safe.err mkdir tmp chown mysql:mysql -R ../*
Datenbankinitialisierung
Wenn wir nicht initialisieren, verwenden Sie bin/ mysqld_safe zum direkten Starten Es wird ein Fehler gemeldet, da wir die MySQL-Umgebung initialisieren müssen. Lesen Sie zu diesem Zeitpunkt den Artikel:
$ 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
Die Eingabeaufforderung fordert Sie auf, den Root-Benutzer und ein temporäres Passwort erstellt zu haben Die Initialisierung ist erfolgreich.
Starten Sie die Datenbank
Zu diesem Zeitpunkt verwenden wir laut offizieller Dokumentation den Befehl mysqld_safe zum Starten:
$ 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
Öffnen die Datenbank
Der Datenbankprozess wurde gestartet und wir können die MySQL-Datenbank normal im neuen Terminal verwenden:
$ 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
Aber die Verwendung des MySQL-Befehls meldet direkt einen Fehler:
$ bin/mysql -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Gemäß der Beschreibung der Rolle von mysql.sock geben wir einfach den mysql.sock-Pfad an:
bin/mysql -S /home/work/lnmp/mysql8/tmp/mysql.sock -h localhost -uroot -p Enter password:
Ändern Sie das Anfangskennwort
Danach Wenn wir die Datenbank öffnen und einen beliebigen Befehl verwenden, werden wir aufgefordert, das anfängliche temporäre Passwort zu ändern:
mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Passwort ändern:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.05 sec)
Verbinden Sie sich erneut und das neue Passwort wird wirksam.
Globalen Befehl verknüpfen
Derzeit können wir nur den Pfad /home/work/lnmp/mysql8/bin/mysql oder den relativen Pfad zum Aufrufen von MySQL verwenden. Der Link muss ein globaler Befehl sein:
$ ln -s /home/work/lnmp/mysql8/bin/mysql /usr/bin/ $ ln -s /home/work/lnmp/mysql8/bin/mysql_safe /usr/bin/
Socket-Datei angeben
In Version 8.0 habe ich viele Methoden ausprobiert, um den vom MySQL-Befehl abgefragten Standard-Socket-Pfad zu ändern my.cnf. Immer noch erfolglos, daher mussten wir die Socket-Datei im Standardpfad verknüpfen:
ln -s /home/work/lnmp/mysql8/tmp/mysql.sock /tmp/
Dann rufen wir den MySQL-Befehl auf und es wird kein Fehler gemeldet.
Datenbank neu starten
Während des Vorgangs müssen wir beim Debuggen von Parametern möglicherweise die Datenbank neu starten:
// 杀死进程,相当于停止 cat tmp/mysqld.pid | xargs kill // 正常启动mysql bin/mysqld_safe --defaults-file=/home/work/lnmp/mysql8/my.cnf
Benutzer hinzufügen und gewähren Berechtigungen
In mysql8 habe ich einen Benutzer erstellt und einen Wert zugewiesen, und das Ergebnis war ein Fehler:
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
Laut Online-Informationen liegt das daran, dass Mysql8 die Vorgänge des Erstellens trennt ein Konto und Gewährung von Berechtigungen:
// 创建账户 create user '用户名'@'访问主机' identified by '密码'; // 赋予权限(修改权限时在后面加with grant option) grant 权限列表 on 数据库 to '用户名'@'访问主机' ; // 刷新权限 flush privileges;
Zusammenfassung
Nach dem Dekomprimieren der Datei erstellen Sie einen MySQL-Benutzer und eine Benutzergruppe, konfigurieren die Konfigurationsdatei my.cnf, ändern die Berechtigungen, initialisieren und Starten Sie die Datenbank, öffnen Sie die Datenbank, ändern Sie das Anfangskennwort, verknüpfen Sie globale Befehle und geben Sie den Socket-Dateipfad an. Alle Installationsarbeiten sind abgeschlossen.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Installation von MySQL 8.0 unter Linux (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!