Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Detaillierte Einführung in die Installation von MySQL 8.0 unter Linux (Codebeispiel)

Detaillierte Einführung in die Installation von MySQL 8.0 unter Linux (Codebeispiel)

不言
不言nach vorne
2018-12-15 11:05:216672Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen