Vorwort
Ich habe zuvor versucht, die Community-Version und die Version, die ich MySQL5.7
heute installiert habe, zu installieren, und habe sie auf zwei Arten installiert: Zum einen durch die Installation des RPM-Pakets und zum anderen durch Kompilieren.MySQL8.0
1. Vorbereitende Vorbereitung
Server-IP anzeigen
[root@localhost ~]# hostname -I
192.168.161.166 192.168.122.1
Ob das Netzwerk gepingt werden kann
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=53 time=20.0 ms
64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=53 time=41.4 ms
Schalten Sie Firewall und SELinux aus
[root@localhost ~]# iptables -F
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
2. Installieren Sie MySQL8.0 mit RPM
Wenn Sie aus den vorherigen Installationsartikeln MySQL5.7
gelernt haben , MySQL8
sind einige Installationsprozesse für die Installation gleich.
Schritte zur Linux-Installation der MySQL5.7-Datenbank
2.1 Löschen Sie die Mariadb-Datei im System
Bei der oben genannten CentOS7
Installation müssen zunächst die relevanten Dateien und Softwarepakete MySQL
gelöscht werden , andernfalls wird die offizielle Installation während des nachfolgenden Installationsvorgangs beeinträchtigt.mariadb
MySQL8
[root@localhost ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ~]# rpm -qa | grep mysql
[root@localhost ~]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64
错误:依赖检测失败:
libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要
Wenn die obige Situation auftritt, können Sie --nodeps
die erzwungene Entfernung des Pakets direkt hinzufügen
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
Löschen Sie dann einige Dateien, die der Mariadb-Dienst ursprünglich mit dem System geliefert hat. Sie können ihn find
zum Durchsuchen verwenden
[root@localhost ~]# find / -name mariadb
[root@localhost ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
[root@localhost ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql
2.2 Verwenden Sie eine Ali-Netzwerkquelle
Nachdem die Dateien gelöscht wurden, können Sie mit dem nächsten Schritt fortfahren, nämlich dem Sichern der integrierten Basisquelle. Natürlich ist es auch möglich, sie direkt zu löschen.
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
Ersetzen Sie es durch die Netzwerkquelle. Ersetzen Sie es hier durch Alis Quelle und verwenden Sie
die Netzwerkquelladresse: Alibaba Cloud CentOS-Quelle
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#查看源的状态信息
[root@localhost yum.repos.d]# yum repolist
#清空之前的一些软件包信息
[root@localhost yum.repos.d]# yum clean all
#重新建立元缓存
[root@localhost yum.repos.d]# yum makecache
2.3 Installieren Sie MySQL8.0
Mit diesem Schritt beginnt die formelle Installation von MySQL. Gehen Sie zunächst zur offiziellen Website, um das erforderliche Paket herunterzuladen.
Wenn Sie nicht wissen, wie Sie es finden, können Sie direkt mit Strg + F nach der Adresse des Pakets suchen, das Sie benötigen Klicken Sie dann auf und kopieren Sie dann den vollständigen Download-Link auf den Server. Superior.
Adresse des MySQL-RPM-Pakets: Klicken Sie hier, um den Befehl zum Herunterladen des Pakets
zu verwendenwget
rpm
wget https://repo.mysql.com/mysql80-community-release-el7.rpm
Nach dem Herunterladen ist der Standardspeicherort des rpm
Pakets lokal und muss mit dem Befehl rpm installiert werden.
[root@localhost yum.repos.d]# rpm -ivh mysql80-community-release-el7.rpm
警告:mysql80-community-release-el7.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql80-community-release-el7-7 ################################# [100%]
Wenn Sie sich immer noch nicht erinnern, was ivh bedeutet, sprechen wir über
i für die Installation von Softwarepaketen,
v für die Anzeige des Prozesses
, h für die Anzeige des Fortschrittsbalkens
Nachdem Sie den vorherigen Schritt ausgeführt haben, /etc/yum.repos.d
befindet sich im Verzeichnis eine Quelle repo
. Zu diesem Zeitpunkt können Sie das Programm mit dem Befehl yum in dieser Quelle installieren.
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Vault.repo
CentOS-Base.repo.bak CentOS-x86_64-kernel.repo
CentOS-CR.repo epel.repo
CentOS-Debuginfo.repo mysql80-community-release-el7.rpm
CentOS-fasttrack.repo mysql-community-debuginfo.repo
CentOS-Media.repo mysql-community.repo
CentOS-Sources.repo mysql-community-source.repo
yum install mysql-community-server -y
2.4 Starten Sie den Dienst
Die vorherige Installation ist beendet und es ist Zeit, den Dienst zu starten
[root@localhost yum.repos.d]# systemctl start mysqld
[root@localhost yum.repos.d]# systemctl enable mysqld
Finden Sie das ursprüngliche Passwort für den Dienst
[root@localhost yum.repos.d]# grep -aiw "Password" /var/log/mysqld.log
2023-03-09T09:03:09.167404Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: p!c?qf/4gfqU
Auf den Doppelpunkt folgt das ursprüngliche MySQL-Passwort.
Wir müssen mit dem nächsten Schritt fortfahren, nämlich dem Ändern des ursprünglichen Passworts.
[root@localhost yum.repos.d]# mysql -uroot -p
Enter password: #输入原始密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.32
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
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.
#修改密码,密码尽可能的复杂些,至少需要8位以上。
mysql> alter user 'root'@'localhost' identified by 'Dianzan80/';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
Die Verwendung RPM
des Installationsprozesses ist so inhaltsreich, sehen wir uns weiterhin an, wie man kompiliert und installiert MySQL8.0
.
3. Installieren Sie MySQL8.0 mit dem Binärpaket
Um die Datenbank durch Kompilieren zu installieren, müssen Sie zunächst den Speicherort des komprimierten Pakets kennen
und die offizielle Website-Adresse des Pakets kompilieren: Klicken Sie hier
3.1 Komprimiertes Paket herunterladen
MySQL8.0
ZIP-Datei heruntergeladen
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
Entpacken Sie das Paket und fahren Sie mit /usr/local/
dem nächsten fort
[root@localhost ~]# tar xf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
[root@localhost ~]# mv mysql-8.0.32-linux-glibc2.12-x86_64 /usr/local/mysql
3.2 Erstellen Sie einen Systembenutzer
Erstellen Sie einen Benutzer, um die Datenbankverwaltung zu erleichtern
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql -s /bin/false mysql
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql
3.3 Festlegen globaler MySQL-Variablen
Ändern Sie die globalen Variableninformationen in /etc/profile
und fügen Sie diese beiden Sätze am Ende hinzu.
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# tail -n 2 !$
tail -n 2 /etc/profile
export MYSQL_HOME=/usr/local/mysql 1
export PATH=$MYSQL_HOME/bin:$PATH 2
[root@localhost ~]# source !$
source /etc/profile
3.4 Initialisieren Sie die Datenbank
Erstellen Sie zunächst im Voraus ein Verzeichnis zum Speichern von Daten und erstellen Sie es /usr/local/mysql/
unter dem Verzeichnis
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir data
Es ist Zeit, die Datenbank zu initialisieren
[root@localhost mysql]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2023-03-09T09:30:27.217276Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2023-03-09T09:30:27.217395Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.32) initializing of server in progress as process 3831
2023-03-09T09:30:27.223941Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-03-09T09:30:28.700635Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-03-09T09:30:30.538920Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: tm!NuBMBR2r/
[root@localhost mysql]# echo $?
0
user gibt den Datenbanknamen an.
basedir gibt den Ort an, an dem die Datenbank gespeichert ist.
datadir gibt den Ort an, an dem die Daten gespeichert sind
Es ist nicht klar, ob die Ausführung erfolgreich ist oder nicht. Sie können es echo $?
zur Beurteilung verwenden, und 0 bedeutet kein Problem.
Ein weiterer zu beachtender Punkt ist, dass nach der Initialisierung ein Originalpasswort generiert wird, das bekannt sein und später für die Anmeldung bei der Datenbank verwendet werden muss.
3.5 Konfigurationsdateien festlegen
mysql
Standardmäßig befindet sich im Verzeichnis eine Verzeichnisdatei , support-files
und die Konfigurationsdatei im Verzeichnis muss in das /etc/init.d/
Startelement des Dienstes kopiert werden.
[root@localhost support-files]# ll
总用量 20
-rwxr-xr-x. 1 mysql mysql 1061 12月 16 23:34 mysqld_multi.server
-rw-r--r--. 1 mysql mysql 2027 12月 17 00:26 mysql-log-rotate
-rwxr-xr-x. 1 mysql mysql 10576 12月 17 00:26 mysql.server
[root@localhost support-files]# cp mysql.server /etc/init.d/mysql.server
/etc/
Darüber hinaus müssen Sie dem Verzeichnis eine Konfigurationsdatei hinzufügen
vim /etc/my.cnf
#以下是文件内要添加的信息,文件默认有内容,可以删除修改成如下内容。
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
#服务端口号 默认3306
port = 3306
#mysql安装根目录
basedir = /usr/local/mysql
#mysql数据文件所在位置
datadir = /usr/local/mysql/data
#临时目录
tmpdir = /tmp
#设置socke文件所在目录
socket = /tmp/mysql.sock
#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
skip-external-locking
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
#lower_case_table_names = 1
#最大连接数
max_connections = 400
#最大错误连接数
max_connect_errors = 1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout 值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 134217728
max_heap_table_size = 134217728
#数据库错误日志文件
log_error = error.log
#慢查询sql日志设置
slow_query_log = 1
slow_query_log_file = slow.log
#开启binlog
log_bin=on
#检查未使用到索引的sql
log_queries_not_using_indexes = 1
#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes = 5
#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements = 1
#慢查询执行的秒数,必须达到此值可被记录
long_query_time = 8
#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit = 100
#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days = 5
Dann stellt sich die Frage: my.cnf
Wozu dient diese Konfigurationsdatei?
Tatsächlich ist my.cnf eine Verwaltungskonfigurationsdatei von MYSQL. Durch Ändern des Inhalts dieser Datei kann MYSQL optimiert und die Gesamtleistung von MYSQL verbessert werden.
3.6 Starten Sie die Datenbank
Die oben genannten Informationen sind konfiguriert, aber vergessen Sie nicht, die Datenbank zu starten.
service mysql.server start
Wenn Sie schließlich eins sehen SUCCESS
, bedeutet dies, dass der Start erfolgreich war.
3.6 Ändern Sie das Kennwort des Datenbankverwaltungssystems
Merken Sie sich das ursprüngliche Passwort der vorherigen Datenbank. Nein, es muss hier verwendet werden.
Wenn die Datenbank das Passwort nicht erkennt, fügen Sie zum Anmelden einfache Anführungszeichen hinzu
[root@localhost mysql]# mysql -uroot -ptm!NuBMBR2r/
bash: !NuBMBR2r/: event not found
[root@localhost mysql]# mysql -uroot -p'tm!NuBMBR2r/'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
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> alter user 'root'@'localhost' identified by 'Dianzan001/!';
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
Der Kompilierungs- und Installationsprozess wurde ebenfalls demonstriert. Anschließend können Sie sich mit dem gerade für den Betrieb festgelegten Kennwort direkt bei der Datenbank anmelden.
Zusammenfassen
Die Kompilierung von MySQL ist relativ kompliziert. Sie können es ein paar Mal versuchen und sind mit den Schritten vertraut. Wenn Sie der Meinung sind, dass der obige Inhalt in Ordnung ist, können Sie ihn liken und unterstützen!