1、下载安装包
进入官网(https://dev.mysql.com/downloads/mysql/)下载指定版本的mysql安装包。

这里根据系统版本下载的是mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz压缩文件包。
2、解压压缩文件
[developer@iZuf6ai62xce7yu53epv2jZ soft]$ xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
[developer@iZuf6ai62xce7yu53epv2jZ soft]$ tar xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar
然后将解压后的文件夹移动到指定的目录下:
[developer@iZuf6ai62xce7yu53epv2jZ soft]$ sudo mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.20
[developer@iZuf6ai62xce7yu53epv2jZ soft]$ cd /usr/local/mysql-8.0.20/
[developer@iZuf6ai62xce7yu53epv2jZ soft]$ sudo mkdir log
3、初始化mysql
在初始化前先创建mysql的独立用户,并创建初始化配置文件。
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo useradd -M -s /sbin/nologin mysql
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo chown -R mysql:mysql /usr/local/mysql-8.0.20/
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ vim /etc/my.cnf
然后在my.cnf中添加内容:
#dvice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
port=3306
datadir=/usr/local/mysql-8.0.20/data
#socket=/data/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
log-error=/usr/local/mysql-8.0.20/log/error.log
pid-file=/usr/local/mysql-8.0.20/log/mysqld.pid
# 忘记密码后设置登录不需要密码
#skip-grant-tables
default-authentication-plugin=mysql_native_password
character_set_server=utf8mb4
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 忽略表名大小写。0:表名存储为给定的大小和比较是区分大小写的 1: 表名存储在磁盘是小写的,但是比较的时候是不区分大小写 2: 表名存储为给定的大小写但是比较的时候是小写的
lower_case_table_names=1
log-bin-trust-function-creators=1
# 开启慢查询日志
#log-bin=mysql-bin
slow_query_log=on
slow_query_log_file=/usr/local/mysql-8.0.20/log/slow_query.log
long_query_time=10
max_connections=10000
interactive_timeout = 500
wait_timeout = 300
[client]
default-character-set = utf8mb4
保存退出文件编辑。
执行初始化操作:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo ./bin/mysqld --user=mysql --basedir=/usr/local/mysql-8.0.20/ --datadir=/usr/local/mysql-8.0.20/data/ --initialize
初始化操作完成后,通过日志查看初始化时的密码:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo cat log/error.log
2020-06-19T02:25:05.443998Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.20/bin/mysqld (mysqld 8.0.20) initializing of server in progress as process 17882
2020-06-19T02:25:05.450425Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-06-19T02:25:07.131128Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-06-19T02:25:08.071779Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: q4K1uzeUSw?!
4、配置mysql服务
首先将mysql添加到环境变量,这样可以在磁盘任何地方进行调用mysql命令:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo vim /etc/profile
# 在文件末尾处进行添加
PATH=$PATH:/usr/local/mysql-8.0.20/bin
export PATH
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ source /etc/profile
配置mysql服务:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo vim /usr/lib/systemd/system/mysqld.service
# 在文件中进行添加
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-8.0.20/bin/mysqld
LimitNOFILE = 65536
LimitNPROC = 65536
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl daemon-reload
测试服务是否正确配置:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl start mysqld
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2020-06-19 10:34:57 CST; 4s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 18129 (mysqld)
Tasks: 39 (limit: 26213)
Memory: 332.4M
CGroup: /system.slice/mysqld.service
└─18129 /usr/local/mysql-8.0.20/bin/mysqld
Jun 19 10:34:57 iZuf6ai62xce7yu53epv2jZ systemd[1]: Started MySQL Server.
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl stop mysqld
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl restart mysqld
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ ps -ef|grep mysql
mysql 18184 1 9 10:36 ? 00:00:00 /usr/local/mysql-8.0.20/bin/mysqld
将启动,查看状态,关闭,重启命令,查看进程进行调用后,可见服务正常配置。
设置mysql开机自启动:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ sudo systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
5、修改mysql初始密码
mysql的初始密码必须进行修改,否则无法进行其他操作。登录mysql修改密码,初始密码即为上面日志文件中的密码:
[developer@iZuf6ai62xce7yu53epv2jZ mysql-8.0.20]$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
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 '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
Comments NOTHING