一、Linux 环境安装 MySQL 8.0¶
1.1 软件下载与版本选择¶
1、点击https://www.mysql.com/downloads/ ,选择官网网站的【DOWNLOADS】进行数据库软件程序下载选择

2、在数据库官方下载页面中,选择 【MySQL Community (GPL) Downloads】链接,进行数据库程序社区版下载

3、进入数据库程序的社区版下载页面后,会看到社区版数据库服务的多种安装场景,本课程选择MySQL Community Server方式安装
官方最新版下载页面:

官方历史版下载页面:(本次课程讲解选择历史相对稳定版本进行安装部署)

4、进入到社区版服务器安装场景界面,需要选择数据库服务的安装部署环境和需要下载的程序具体版本信息;

选择依据:
查看Linux系统的glibc运行使用的C语言库版本信息:
```tiki wiki [root@master ~]# getconf GNU_LIBC_VERSION glibc 2.17 [root@master ~]# ldd --version ldd (GNU libc) 2.17 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 由 Roland McGrath 和 Ulrich Drepper 编写。
## 1.2 Linux 常见安装方式
- **不同系统环境数据库服务安装方式-Linux**
在Linux系统中常见的部署安装方式:
| 序号 | 安装方式 | 特征说明 |
| ---- | ------------------ | ------------------------------------------------------------ |
| 01 | 采用二进制方式安装 | 直接解压缩二进制程序包,进行简单的配置和初始化操作即可 |
| 02 | 采用rpm包方式安装 | 需要从官方网站下载rpm程序包,并且需要考虑系统环境的兼容性,解决软件程序包依赖 |
| 03 | 采用yum包方式安装 | 需要根据官方网站说明,配置yum下载的仓库源信息,在联网情况下进行安装部署 |
| 04 | 采用源码包方式安装 | 需要从官方网站下载源码程序包,并且需要解决程序包依赖问题,以及需要采用编译安装 |
> 说明:本次课程主要围绕数据库服务的应用和管理进行讲解,所以选择二进制包安装方式,使安装过程更加简单和规范。
## 1.3 MySQL 8.0 二进制部署
### 1.3.1 部署前环境准备
| 主机名 | 主机地址 | 虚拟主机环境 | 主机OS |
| ------ | --------- | ------------ | --------- |
| master | 10.0.0.51 | 1核 2G 100G | CentOS7.9 |
1、确认操作系统数据库服务安装环境
```shell
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2、查看操作系统的网卡地址
[root@master ~]# ip add show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:2b:04:b9 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.51/24 brd 10.0.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::5877:f9f3:c82b:9873/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3、查看系统本地域名解析信息
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.51 master
测试
[root@master ~]# ping -c1 master
PING master (10.0.0.51) 56(84) bytes of data.
64 bytes from master (10.0.0.51): icmp_seq=1 ttl=64 time=0.011 ms
--- master ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.011/0.011/0.011/0.000 ms
4、查看防火墙服务是否关闭
[root@master ~]# systemctl is-active firewalld
unknown
[root@master ~]# systemctl is-enabled firewalld
disabled
如果没有关闭,执行下面命令进行关闭
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
5、查看selinux安全策略是否关闭
[root@master ~]# getenforce
Disabled
如果没有关闭,执行下面命令进行关闭
[root@master ~]# setenforce 0
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
6、清除系统自带的mariadb数据库服务相关的程序包
[root@master ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
mariadb-server-5.5.68-1.el7.x86_64
mariadb-5.5.68-1.el7.x86_64
[root@master ~]# yum remove -y `rpm -qa|grep mariadb`
7、安装数据库服务程序所需的依赖软件包
[root@master ~]# yum install -y libaio-devel
注意:如果系统是centos 8需要修改链接库信息
[root@master ~]# ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
[root@master ~]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
或者
[root@master ~]# yum install ncurses-compat-libs -y
1.3.2 开始部署 MySQL 8.0¶
1、上传数据库程序软件包
[root@master ~]# cd /usr/local
[root@master local]# rz -y
2、解压数据库服务软件程序压缩包
[root@master local]# tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
3、创建数据库服务程序目录的软链接
[root@master local]# ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql
4、配置数据库服务程序环境变量
末尾处添加如下内容
[root@master local]# vim /etc/profile
…
…
export PATH=/usr/local/mysql/bin:$PATH
验证
[root@master local]# tail -1 /etc/profile
export PATH=/usr/local/mysql/bin:$PATH
环境变量生效
[root@master local]# source /etc/profile
获取数据库服务版本信息
[root@master local]# mysql -V
mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
5、创建数据库服务管理用户信息
[root@master local]# useradd mysql
6、创建数据库服务相关目录并进行目录信息进行授权
[root@master local]# mkdir -p /data/3306/data /data/3306/logs
[root@master local]# chown -R mysql. /data/
说明:以上操作步骤只是保证了数据库服务的软件程序部分安装完毕,在系统中可以识别数据库程序。
7、数据库服务初始化
[root@master local]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
8、创建数据库服务运行需要加载的my.cnf配置模板文件
[root@master local]# cat > /etc/my.cnf <<eof
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
innodb_fast_shutdown=0
eof
9、启动运行MySQL数据库服务脚本
(1)方式一-service方式:适用centos6和centos7
查看数据库服务默认启动脚本文件
[root@master local]# ls -l /usr/local/mysql/support-files/mysql.server
-rwxr-xr-x 1 7161 31415 10576 7月 1 2021 /usr/local/mysql/support-files/mysql.server
设置数据库服务程序启动运行文件
[root@master local]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
启动数据库服务程序利用脚本文件
[root@master local]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/3306/data/master.err'.
SUCCESS!
启动和停止数据库服务均成功
[root@master local]# service mysqld start
[root@master local]# service mysqld stop
设置数据库服务开机自动运行
[root@master local]# chkconfig --add mysqld
(2)方式二-systemd方式:适用centos7
编写配置管理文件
[root@master local]# vim /lib/systemd/system/mysqld3306.service
[Unit]
Description=MySQL Server
Documentation=mysqld.service
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf shutdown
ExecReload=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf reload
LimitNOFILE = 5000
将service管理服务方式转换为systemd管理服务方式
[root@master local]# systemctl daemon-reload
[root@master local]# systemctl enable mysqld3306
启动数据库服务
[root@master local]# systemctl start mysqld3306
[root@master local]# systemctl is-active mysqld3306
active
检查确认数据库服务是否启动成功
[root@master local]# netstat -lntup|grep 3306
tcp6 0 0 :::33060 :::* LISTEN 2942/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2942/mysqld
[root@master local]# ps -ef|grep mysql
root 2801 1 0 20:51 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/3306/data --pid-file=/data/3306/data/master.pid
mysql 2942 2801 0 20:51 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=master.err --pid-file=/data/3306/data/master.pid --socket=/tmp/mysql.sock
root 2998 1762 0 20:52 pts/0 00:00:00 grep --color=auto mysql
特殊说明:在启动mysql数据库服务时,可能看到33060端口信息,此端口信息主要实现mysqlx协议的通讯过程;
利用mysqlx协议可以实现利用mysql-shell功能组件,对数据进行key-value操作,即识别json文件信息,进行远程管理;
Port 3306 is the default port for the MySQL Protocol, which is used by the mysql client, MySQL Connectors, and utilities such as mysqldump and mysqlpump.
Port 33060 is the default port for the MySQL Database Extended Interface (the MySQL X Protocol).
The X Plugin can be disabled at startup by either setting mysqlx=0 in your MySQL configuration file, or by passing in either --mysqlx=0 or --skip-mysqlx when starting the MySQL server.
Alternatively, use the -DWITH_MYSQLX=OFF CMake option to compile MySQL Server without X Plugin.
参考链接:https://blog.csdn.net/michaelwoshi/article/details/107955539
10、设置密码
(1)方式一:命令行方式
[root@master local]# mysqladmin password '123456'
或者
[root@master local]# mysqladmin -uroot -p password '123456'
(2) 方式二:SQL方式
[root@master local]# mysql
mysql> alter user root@'localhost' identified by '123456';