一,数据库概述

1.为什么要使用数据库

  1. 将数据持久化。

  2. 持久化主要作用:是将内存中的数据库存储在关系型数据库中,本质也就是存储在磁盘文件中。

  3. 数据库在横向上的存储数据的条数,以及在纵向上存储数据的丰富度,都要好于其他介质。

2.数据库与数据库管理系统

1.数据库的相关概念

  1. DB:数据库(Database)即为存储数据的 “仓库”,其本质是一个文件系统。
  2. DBMS:数据库管理系统。是一种操作和管理数据库的大型软件。用于建立,使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
  3. SQL:结构化查询语言,专门用来与数据库通信的语言。

2.DB 与 DBMS 的关系

数据库管理系统(DBMS)可以管理多个数据库,一个管理系统对应一个或多个数据库,一个数据库对应多个表,一张表对应多条数据,一条数据对应多个字段。

3.常见的数据库管理系统排名(DBMS)

查看排名的网站:https://db-engines.com/en/ranking

3 关系型数据于非关系型数据库

1.关系型数据库 - RDBMS

  1. 该类型数据库是 "最古老" 的数据库类型,是将复杂的数据结构,归结为简单的二维表格形式。
  2. 关系型数据库,是以 "行-row" 和 "列-column" 的形式存储数据。一系列的 "行" 和 "列" 称为 “表” ,一组表组成一个 "库-database"。
  3. 表与表之间的数据记录是有关系的。关系型数据库,也就是建立在 "关系模型" 基础上的数据库。
  4. 使用 SQL 语言查询数据。
  • 优势:
  1. 复杂查询:使用 SQL 语句方便在一个表或多个表之间做非常复杂的数据查询。
  2. 事务支持:数据库安全性高,等...

2.非关系型数据库 - N-RDBMS

非关系型数据库,是传统关系型数据库,舍得版本。基于键值对存储数据,不需要经过 SQL 语言的解析,"性能非常高"。同时,通过减少不常用的功能,从而提供性能。

  • 非关系型数据库的种类:
  1. 键值型数据库:Redis。
  2. 文档型数据库:MongoDB。
  3. 搜索引擎数据库:Elasticsearch。
  4. 列式数据库:HBase。
  5. 图形数据库:Neo4J。
  6. 其他类型的非关系数据库等...

4.关系型数据库设计规则

  • 关系型数据库的典型数据结构就是 "数据表" ,这些 "数据表" 组成都是结构化的。
  • 将数据放到表中,表再放到库中。
  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名要具有唯一性。
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似就 JAVA 和 Python 中 "类" 的设计

1.表,行,列

ORM-面向对象思想(对象关系映射):

  1. 数据库中的一个表 <----对应----> JAVA 中的一个类。
  2. 表中的一条数据 <----对应----> 类的一个对象实例。
  3. 表中的一个列 <----对应----> 类中的一个属性,成员变量。

2.表的关联关系

表与表之间的数据记录是存在关系的,一般这种使用 "关系模型" 来表示。常见的有以下四种关联关系:

  1. 一对一关联(一个人员对应一个用户)。
  2. 一对多关联(一个图层对应多个点位)。
  3. 多对多关联(一个用户对应多个角色,一个角色对应多个用户)。
  4. 自我引用(类别表)。

1.一对一关联

  • 可用于优化查询数据。

当一张表中的字段(列)太多时,在查询时会造成大量内存冗余。查询效率低。因此我们可以根据(常用字段或者说常用业务)将表拆为两张或多张表,表之间的关系是:"一对一的关系",从而提高查询效率。

  • 两种建表原则:
  1. 外键唯一:"主表" 的主键对应 "从表" 的外键(唯一),形成主外键关系,外键唯一。
  2. 外键是主键:"主表" 的主键和 "从表" 的主键,形成主外键关系。

2. 一对多关联

  • 可用于存储数据关系为一对多的数据,例如:图层表对应多条点位数据。

建表原则:在 "从表-图层表" 创建一个字段,该字段作为外键指向 "主表-点位表" 的主键,建立一对多的关系。

3.多对多关联

建表原则:要表示多对多关系,必须创建第三张表,该表通常称为 "联接表/中间表",该表将多对多关系划分为两个一对多关系,将这两个表的主键都插入到第三个表中,从而建立关系。这个 "多" 在 "中间表" 中体现。

4.自我引用

  • 可用于存储数据结构为树形结构的数据,例如:户籍中父子关系,公司中部门关系等...

建表原则:在表中创建一个 "自我引入" 字段引用表中其他数据的主键,建立关系。

前言

常见的 MySQL 安装共有五种方式,分别是:

  1. 软件仓库(yum 或 apt)安装。

  2. rpm 或 deb 文件安装。

  3. 通用二进制文件安装。

  4. Docker 安装。

如有需要使用 "Docker" 安装 MySQL 的话,请参阅:https://hub.docker.com/r/mysql/mysql-server/

  1. 源代码编译(定制化)。

如有需要 "定制化" 或 "自主扩展" MySQL 的话,请参阅:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html

说明:本文章中只介绍 "通用二进制文件安装" 以及 "rpm 文件安装",这两种方式安装。

二,Linux中卸载MySQL数据库

说明:第一次安装请略过!

1.检查是否安装 MySQL

使用一下命令查看当前安装MySQL的情况,是否安装了 MySQL

rpm -qa|grep -i mysql

显示一下内容说明安装了:

MySQL-client-5.5.25a-1.rhel5
MySQL-server-5.5.25a-1.rhel5
...

停止MySQL服务,删除卸载安装的 MySQL。命令:rpm -e –-nodeps 包名

rpm -ev MySQL-client-5.5.25a-1.rhel5
rpm -ev MySQL-server-5.5.25a-1.rhel5

2.查找MySQL的目录

查找 MySQL 目录(提示:现在很多都是使用编译的 MySQL 安装包进行安装的,所以查找文件是必须的)

find / -name mysql

具体要根据个人的情况,删除对应的 mysql 目录(注意:宁可不删,不可乱删!)。

注意:/etc/my.cnf 不会删除,需要进行手工删除。

rm -rf /etc/my.cnf

3.检查是否卸载成功

再次查找机器是否安装 MySQL(注意:再次检查文件是必须的)

  • 检查安装情况
rpm -qa|grep -i mysql
  • 检查 MySQL 配置文件情况
find / -name /etc/my.cnf

无结果说明卸载(删除)成功!

三,Linux下安装MySQL数据库 - 二进制文件

  • 基本介绍:

    本次是在Linux下安装MySQL数据库。无需编译安装,解压后初始化即可使用。

    本次演示的MySQL版本为: MySQL Community Server 8.0.20

1.查看环境信息

  • 查看 linux 内核版本的命令:
uname -a

uname 命令选项:

  • -a 或 --all:显示所有信息;
  • -n 或 --nodename:只打印对外主机名;
  • -r 或 --release:只打印内核版本;(下载文件时能用到)
  • -p 或 --processor:打印系统架构,比如X86_64;
  • -o 或 --operating-system:打印操作系统名称;

本文章是:GNU/Linux 的 x86_64 位操作系统。

  • 查看Linux操作系统版本的命令:
# 查看Linux系统版本的命令
lsb_release -a
# 或者
cat /etc/redhat-release

本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系统版本

扩展 - Redhat系的Linux系统请使用:

cat /etc/issue

2.下载 MySQL

打开官方下载地址:https://downloads.MySQL.com/archives/community/ 或者 https://dev.mysql.com/downloads/MySQL/ 根据自己对应是系统,以及版本进行选择,这里演示的是Linux系统的安装 MySQL 8.0.20(本文章是:GNU/Linux 的 x86_64 位操作系统)。

  • 直接点击下面的 Download 即可下载,下载完成将文件上传到Linux。

  • 当然也可以在Linux系统中用 wget 方式进行下载:

wget https://cdn.MySQL.com/archives/MySQL-8.0/MySQL-8.0.20-linux-glibc2.12-x86_64.tar.xz

3.上传安装包并解压

  • 创建安装文件夹
mkdir -p /usr/local/mysql
  • 将 MySQL 安装文件上传到 "/usr/local/mysql" 文件夹下,并解压:

注意:从 MySQL 8.0 开始下载的安装包是 ".xz" 结尾的了,需要先使用 xz 命令处理。

xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

解压 tar压缩包 命令:

tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar
  • 文件解压后重命名(提示:该步骤根据个人习惯)
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
  • 看一下现在的 MySQL 安装文件的名称和所在路径。
pwd

名称:"mysql",安装路径:"/usr/local/mysql"。这些信息很重要哦!

4.安装前准备

  • 检查 libaio 库是否安装。

说明:MySQL 依赖 libaio 库,如果未在本地安装此库,则数据库初始化和后续的服务器启动步骤将会失败。

如果未安装,在初始化时可能遇到下面的报错:

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directoryx

libaio 检查命令:

whereis libaio.so.1

出现以上结果说明 libaio 库已经安装。

如果没有找到 "libaio.so.1" 文件,就要手动安装 libaio 库。

方式1:yum 安装。

yum install -y libaio

注意:此时,使用 yum 命令安装,电脑网络必须保证是正常的。

方式2:离线安装。

下载地址:https://centos.pkgs.org/7/centos-x86_64/libaio-0.3.109-13.el7.i686.rpm.html 网站或镜像地址 http://mirror.centos.org/centos-7/7/os/x86_64/Packages/。

将安装包上传到服务器执行以下命令安装。

rpm -ivh libaio-0.3.109-13.el7.i686.rpm

安装之后请再次执行 "whereis libaio.so.1" 命令再次检查是否安装成功。

  • 检查 和 卸载系统自带的 Mariadb
rpm -qa|grep mariadb

出现以上结果说明系统中安装了 mariadb。

# 强制卸载 mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

卸载之后请再次执行 "rpm -qa|grep mariadb" 检查是否卸载成功。

  • 创建 mysql 组 及 mysql 用户,并授权。
  • 创建 mysql 组命令。
groupadd mysql
  • 创建 mysql 用户以及加入到 mysql 组中。
useradd -r -g mysql mysql

说明:所有的文件和目录都应该在 mysql 用户下(扩展:useradd 中的 "-r" 表示建立为系统帐号)。

  • 创建 "数据" 存放目录并授权(设置拥有者为 mysql)
mkdir -p /usr/local/mysql/data

  • 为 mysql 用户授于 "数据目录(/usr/local/mysql/data)" 权限:
chown -R mysql:mysql /usr/local/mysql/data
  • 为 mysql 用户授于 "MySQL 安装目录(/usr/local/mysql/mysql)" 权限:
chown -R mysql:mysql /usr/local/mysql/mysql
  • 配置 "my.cnf" 文件

说明:"my.cnf" 文件是 MySQL 的默认配置文件,位于 "/etc/my.cnf"。

vi /etc/my.cnf

打开 "my.cnf" 文件将下面配置粘贴进去。

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql/mysql #指定的是MySQL安装目录
datadir=/usr/local/mysql/data #指定的是MySQL数据目录
socket=/tmp/mysql.sock # MySQL 的socket文件
log-error=/usr/local/mysql/data/mysql.err #错误日志存放文件
pid-file=/usr/local/mysql/data/mysql.pid # MySQL 服务进程的pid文件
#skip_ssl #关闭SSL加密连接
character_set_server=utf8mb4 # 设置全局的字符集类型
symbolic-links=0 # 开启数据软连接
explicit_defaults_for_timestamp=true
lower_case_table_names=1 # 设置表名大小不敏感。(MySQL在windows下,默认是对表名大小写不敏感的,但是在Linux下是大小写敏感的)
# 修改使用 "mysql_native_password"(之前的密码认证插件)插件作为认证加密方式
# default_authentication_plugin=mysql_native_password # MySQL8.0 默认认证加密方式为 "caching_sha2_password"
#skip-grant-tables #免密码登陆,注意这时候是没有端口的
  • basedir:指定的是 MySQL 的 "安装目录"。

  • datadir:指定的是 MySQL 的 "数据目录"。

  • socket:MySQL 的socket文件(注意:建议指向"/tmp/mysql.sock",不然的话可能会在连接 MySQL 时会出现错误!)。

错误信息:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2
  • skip_ssl : 关闭 SSL 加密连接。
  • character_set_server=utf8mb4:设置全局的字符集类型。
  • lower_case_table_names=1:设置表名大小不敏感(MySQL在windows下,默认是对表名大小写不敏感的,但是在Linux下是大小写敏感的)。
  • skip-grant-tables :免密码登陆 。注意:设置免密码选项后,这时候的 MySQL 服务没有端口(0),除本机外其他客户端无法连接。
# MySQL8.0 默认认证加密方式为 "caching_sha2_password" ,为了和之前的版本匹配,需要修改为 "mysql_native_password" 插件作为认证加密方式
default_authentication_plugin=mysql_native_password

5.初始化数据库

  • 进入MySQL 安装目录中的 bin目录下:
cd /usr/local/mysql/mysql/bin
  • 执行初始化 MySQL 命令:
./mysqld --defaults-file=/etc/my.cnf --initialize
  • --defaults-file:表示初始化时收使用的配置文件。

特别注意:在初始化和启动 MySQL 的命令中,指定的 "系统变量" 的优先级是大于 "my.cnf" 文件的。个人建议:my.cnf 配置文件中有的 "系统变量" 就不要在初始化时指定了。

  • 将启动脚本 "mysql.server" 复制为 "/etc/init.d/mysql"
cp /usr/local/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
  • 为 MySQL 配置 PATH 环境变量(执行 MySQL 等命令时不需要带路径)
  1. 打开环境变量 "/root/.bash_profile" 文件:
vi /root/.bash_profile
  1. 添加 MySQL 的环境变量:
:/usr/local/mysql/mysql/bin # MySQL的 "安装目录/bin" 添加到 PATH 之后,说明这里已":"号为分隔符
  1. 刷新配置文件,使配置生效:
source /root/.bash_profile

6.启动和停止 MySQL

  • 启动 MySQL,并查看 MySQL 服务状态。
service mysql start
# 或者
systemctl start mysql

  • 查询 MySQL 服务器的状态:
service mysql status
# 或者
systemctl status mysql

  • 查询 MySQL 服务状态命令
ps -ef|grep mysql
  • 扩展命令 - 端口(3306)信息查询命令:
lsof -i:3306
  • 停止 MySQL 服务:
service mysql stop
# 或者
systemctl stop mysql

7.登录 MySQL 并修改密码

  • 查看初始化时生成的密码(说明:在 "错误日志" 中,就是 log-error 参数指向的文件,如果不指定 log-error 选项,默认为 "数据目录"/主机名称.err)。
more /usr/local/mysql/data/mysql.err | grep "A temporary password"

  • 进入 MySQL 安装目录中的bin目录下:
cd /usr/local/mysql/mysql/bin
  • 执行 mysql 命令登录到 MySQL 数据库,密码为初始化数据库时的密码。
./mysql -u root -p
  • 修改 root 密码
alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';

扩展 - 常见修改用户信息的方式:

  • 使用 "set password for" 修改用户密码:
set password for 'root'@'localhost' = 'supconit-mysql';
  • 使用 "alter user" 修改当前用户的密码:
alter user user() identified by 'supconit-mysql';
  • 使用 "update" 修改用户的ip访问权限:
update mysql.user set host = '%' where user = 'root' and host = 'localhost';

注意:使用 DML 语句修改用户密码,必须执行 "刷新权限" 命令也能生效。

flush privileges;
  • 使用(navicat等工具)远程登录登录

navicat下载:链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng 提取码:og7l

特别注意:在使用远程工具远程登录时连接不上。这时就有可能是服务器的防火墙没有关闭导致的!

  • 关闭防火墙
service firewalld stop
# 或者
systemctl stop firewalld

查看服务器的防火墙状态命令:

service firewalld status
# 或者
systemctl status firewalld
  • 防火墙开启时的状态:

说明:Active: active (running) "活动(正在运行)的"。

  • 防火墙关闭时的状态:

说明:Active: inactive (dead) "不活动(死)的"。

扩展 - 开启防火墙的命令:

service firewalld start
# 或者
systemctl start firewalld
  • 再次登录(使用远程工具)

8.遇到的问题

  • 问题1 - 初始化时错误:--initialize specified but the data directory has files in it. Aborting.

原因分析:指定的 "数据目录" 下有文件(即 datadir 选项指向的目录中有文件)。

解决办法:

方式1:删除 "数据目录" 下的所有文件。

方式2:重新创建一个新的 "数据目录",将 datadir 选项指向新的 "数据目录"。

  • 问题2 - 初始化时提示:log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

原因分析:没有找到指定的日志文件(即:没有找到 /var/log/mariadb/mariadb.log 文件)。

解决办法:创建文件夹和文件,然后给 mysql 用户授权。

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql  /var/log/mariadb/
  • 问题3 - MySQL 启动时错误:ERROR! The server quit without updating PID file (/data/mysql/localhost.localdomain.pid).

原因分析:没有找到指定的 "*.pid" 文件(即没有找到 /data/mysql/localhost.localdomain.pid 文件)。

百度了一下这个文件的作用:

localhost.localdomain.pid 文件中保存的是 MySQL 服务进程的 pid,如果这个文件丢了或者启动时没有找到,就会启动失败。可以创建一个新的,然后放入一些数字。

注意:不建议将此文件放到 /tmp 目录下。

解决办法:在指定的文件夹下创建 localhost.localdomain.pid 文件,然后把 MySQL 的服务进程的 pid 写入到该文件中。

  1. 查询 MySQL 服务进程的 pid 。
ps -ef |grep mysql
  1. 在指定的文件夹下创建文件。
vi /data/mysql/localhost.localdomain.pid

注意:新创建的文件不能保存一个空文件,需要在里面输入一些数字。

~ MySQL 问题的解决思路

当 MySQL 启动不了,以及在日常的使用中出现了错误,一定要学会看 MySQL 错误日志。毕竟每个人所遇的情况不一定都是一样的,造成 MySQL 启动不了和错误的原因是真的很多。错误日志路径:my.cnf (Windows是my.ini)文件中的 log-error 选择所指向的文件。

如果配置文件中未指定该选项,则 Windows 系统下 MySQL 错误日志默认路径为:"数据目录/你的主机名称.err", Linux 系统下错误日志默认路径为:"/var/log/mysqld.log"。

SQL 命令查找方法:

show variables like 'log_error';

肉还是别人家的香 - MySQL 通用二进制文件安装网上参考资料:https://blog.csdn.net/qq_37598011/article/details/93489404

四,Linux下安装MySQL数据库 - rpm 文件

基本介绍:

本次是在Linux下安装MySQL数据库。rpm 安装包安装。

本次演示的MySQL版本为: MySQL Community Server 8.0.20

1.查看环境信息

  • 查看 linux 内核版本的命令:
uname -a

uname 命令选项:

  • -a 或 --all:显示所有信息;
  • -n 或 --nodename:只打印对外主机名;
  • -r 或 --release:只打印内核版本;(下载文件时能用到)
  • -p 或 --processor:打印系统架构,比如X86_64;
  • -o 或 --operating-system:打印操作系统名称;

本文章是:GNU/Linux 的 x86_64 位操作系统。

  • 查看Linux操作系统版本的命令:
# 查看Linux系统版本的命令
lsb_release -a
# 或者
cat /etc/redhat-release

本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系统版本

扩展 - Redhat系的Linux系统请使用:

cat /etc/issue

2.需要安装基础工具

如果你的服务器可以连接外网,并且 yum 可以正常使用,直接运行下面一条命令即可。

yum install -y net-tools perl libaio openssl gcc pcre-devel zlib-devel openssl vim openssl-devel

那如果你非常的不幸,要网没网 yum 库还中用的话!祝你好运!所有 rpm 安装包都有的网址:https://pkgs.org/ 直接在页面上搜索即可得到你想要的安装包。

  • 检查 - 安装 gcc 工具库:
gcc -v

注意:如果你的电脑上没有 gcc 的话,就需要安装一个。否则 MySQL 肯定会安装失败!

知识扩展:

根据MySQL官网的资料:https://dev.MySQL.com/doc/refman/8.0/en/source-installation-prerequisites.html

从MySQL 8.0.27开始,MySQL 8.0源代码允许使用C++17功能。若要在所有受支持的平台上启用良好的 C++17 支持级别,Linux环境gcc版本最好在7.1以上,所以先升级gcc版本(gcc7.5.0)。

  • 知识扩展 -升级 gcc 版本:

说明:不升级也不会影响 MySQL 安装。以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。

下载需要的 gcc 版本 :下载网址:http://ftp.gnu.org/gnu/gcc/

上传 gcc-7.5.0.tar.xz 到服务器的 "/usr/local/gcc" 下。

mkdir /usr/local/gcc

进入目录 "/usr/local/gcc" 解压 gcc-7.5.0.tar.xz。

xz -d gcc-7.5.0.tar.xz
tar -xvf gcc-7.5.0.tar

进入解压目录 /gcc-7.5.0,下载依赖(自动下载依赖)。注意:此时,电脑网络必须保证是正常的。

cd gcc-7.5.0
./contrib/download_prerequisites

建立文件夹 build,并进入配置,生成 Makefile 文件即安装配置文件

mkdir /usr/local/gcc/gcc-7.5.0/build
cd /usr/local/gcc/gcc-7.5.0/build
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

编译安装

make & make install

删除老版本,为新版本创建软链接

rm -rf /usr/bin/gcc
rm -rf /usr/bin/g++
rm -rf /usr/lib64/libstdc++.so.6

创建文件夹映射链接 -- 注意这里要按你们自己的配置来

ln -sf /usr/local/bin/gcc /usr/bin/gcc
ln -sf /usr/local/bin/g++ /usr/bin/g++

动态库软链接

ln -sf /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
ln -sf /usr/local/include/c++/7.5.0 /usr/include/c++/7.5.0

注意:文件链接的设置根据实际的情况配置。

重启服务器,再次查看gcc版本

reboot
gcc -v
  • 检查 - 安装 openssl-devel 工具库:
openssl version

可以看到是有的,并且系统自带的版本是 openssl-1.0.2k。

注意:如果你的电脑上没有 openssl-devel 的话,就需要安装一个。否则可能会导致 MySQL 安装失败!

  • 安装 openssl 说明:

说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。

  • 方式一: 使用 yum 安装
yum install openssl openssl-devel

注意:该方式必须保证 yum 命令正常(有外网)的情况下使用。

  • 方式二:下载安装包安装(离线安装)

说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。

下载需要的 ncurses 版本,下载地址:https://www.openssl.org/source/old/

上传 ncurses-5.9.tar.gz 到服务器的 "/usr/local/openssl" 下

mkdir /usr/local/openssl

进入目录 "/usr/local/openssl" 解压 openssl-1.1.1.tar.gz

tar -zxvf openssl-1.1.1.tar.gz

进入解压目录 openssl-1.1.1(完整路径为:/usr/local/openssl/openssl-1.1.1)

cd openssl-1.1.1/

根据系统环境制作安装配置文件

./config --prefix=/usr/local/openssl

安装配置文件

./config -t

编译安装

make & make install
  • 知识扩展 -升级 openssl 版本:

备份旧版本:

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

建立新版本的软链接:

# 命令目录软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# 动态库软链接
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

将 openssl 的 lib 目录追加到 "ld.so.conf" 文件中

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf

刷新动态链接库:

ldconfig -v

说明:如需使用新版本,则需替换原来的软链接指向,即替换原动态库,进行版本升级。

  • 检查 - 安装 cmake 工具库:
cmake -version

可以看到是有的,并且系统自带的版本是 2.0.12.2 的。

  • 安装 cmake 说明(离线安装):

说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。

gcc 等必备程序包,如果没有 gcc 请先安装 gcc 等程序包。

yum install -y gcc gcc-c++ make automake

注意:该方式必须保证 yum 命令正常(有外网)的情况下使用。

获取 cmake 源码包(下载需要的版本)

下载需要的 cmake 版本,下载地址:https://cmake.org/files/ 或者 https://cmake.org/download/

上传 cmake-2.8.10.2.tar.gz 到服务器的 "/usr/local/cmake" 下。

mkdir /usr/local/cmake

进入目录 "/usr/local/cmake" 解压 cmake-2.8.10.2.tar.gz

cd /usr/local/cmake
tar -zxvf cmake-2.8.10.2.tar.gz

进入解压目录 cmake-2.8.10.2(完整路径为:/usr/local/cmake/cmake-2.8.10.2),运行 "bootstrap" 或者 "configure" 文件。

cd cmake-2.8.10.2/

安装配置文件

./bootstrap
# 或者
./configure

编译安装(这步时间有点长)

gmak & gmake install

再次查看 cmake 版本

cmake -version

  • 知识扩展 -升级 cmake 版本:

说明:以下安装方式是使用通用 "二进制文件安装",解压即用。

下载需要的 cmake 版本,下载地址:https://cmake.org/files/ 或者 https://cmake.org/download/

上传 cmake-3.15.5-Linux-x86_64.tar.gz 到服务器的 "/usr/local/cmake" 下

mkdir /usr/local/cmake

进入目录(/usr/local/cmake)解压 cmake-3.15.5-Linux-x86_64.tar.gz

tar -zxvf cmake-3.15.5-Linux-x86_64.tar.gz

删除老版本,为新版本的文件链接:

# 删除老的 cmake
rm -rf /usr/bin/cmake
# 通过建立链接 -替换 cmake
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

再次查看 cmake 版本

cmake -version
  • 检查 - 安装 ncuress-devel 工具库:

**查看电脑上是否安装了 ncurses **

rpm -qa | grep ncurses

注意:如果你的电脑上没有 ncuress-devel 的话,就需要安装一个。否则可能会导致 MySQL 安装失败!

ncuress-devel 安装说明:

  • 方式一: 使用 yum 安装
yum install ncurses-devel

注意:该方式必须保证 yum 命令正常(有外网)的情况下使用。

  • 方式二:下载 rpm 包安装 ncuress-devel(离线安装)

下载需要的 ncurses-devel 版本,下载地址:https://pkgs.org/download/ncurses 或者 http://mirror.centos.org/centos/7/os/x86_64/Packages/ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm

将 ncurses-devel 的安装包上传到服务器

安装命令:

rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
  • 方式三:下载安装包安装(离线安装)

说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。

下载需要的 ncurses 版本,下载地址:https://ftp.gnu.org/gnu/ncurses/

上传 ncurses-5.9.tar.gz 到服务器的 "/usr/local/ncurses" 下

mkdir /usr/local/ncurses

进入目录 "/usr/local/ncurses" 解压 ncurses-5.9.tar.gz

tar -zxvf ncurses-5.9.tar.gz

进入解压目录 /ncurses-6.1(完整路径为:/usr/local/ncurses/ncurses-5.9)

cd ncurses-5.9/

安装配置文件

./configure

编译

make

安装

make install

**看到界面最后输出:表示 ncurses-devel 依赖就装好了。 **

installing ./cursesapp.h in /home/wlf/ncurses/include/ncurses
installing ./cursesf.h in /home/wlf/ncurses/include/ncurses
installing ./cursesm.h in /home/wlf/ncurses/include/ncurses
installing ./cursesp.h in /home/wlf/ncurses/include/ncurses
installing ./cursesw.h in /home/wlf/ncurses/include/ncurses
installing ./cursslk.h in /home/wlf/ncurses/include/ncurses
installing etip.h in /home/wlf/ncurses/include/ncurses
make[1]: Leaving directory `/home/wlf/ncurses-5.9/c++'

3.下载 MySQL

打开官方下载地址:https://downloads.MySQL.com/archives/community/ 或者 https://dev.MySQL.com/downloads/MySQL/,根据自己对应是系统,以及版本进行选择,这里演示的是Linux系统的安装 MySQL 8.0.20(本文章是:GNU/Linux 的 x86_64 位操作系统)。

4.上传安装包并解压

  • 创建文件夹,将文件上传到 "/usr/local/mysql" 文件夹下。
mkdir /usr/local/mysql
  • 进入目录 "/usr/local/mysql" 解压安装包。
tar -xvf mysql-8.0.20-1.el7.x86_64.rpm-bundle.tar

5.进行安装

千万注意:在安装 MySQL 时一定要按照顺序安装。否则会安装失败。

安装顺序:

  1. mysql-community-common-xxx-xx.rpm
  2. mysql-community-test-xxx-xx.rpm
  3. mysql-community-libs-xxx-xx.rpm
  4. mysql-community-client-xxx-xx.rpm
  5. mysql-community-server-xxx-xx.rpm
  6. mysql-community-devel-xxx-xx.rpm

安装命令语法如下:

rpm -ivh mysql-xxx.rpm --nodeps
  • 安装 mysql-community-common- xx...
rpm -ivh mysql-community-common-8.0.20-1.el7.x86_64.rpm --nodeps

警告:MySQL-community-common-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:MySQL-community-common-8.0.20-1.e################################# [100%]

  • 安装 mysql-community-test- xx...
rpm -ivh mysql-community-test-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-test-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql-community-test-8.0.20-1.el7################################# [100%]

  • 安装 MySQL-community-libs- xx...
rpm -ivh mysql-community-libs-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-libs-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql-community-libs-8.0.20-1.el7################################# [100%]

  • 安装 mysql-community-client- xx...
rpm -ivh mysql-community-client-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-client-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql-community-client-8.0.20-1.e################################# [100%]

  • 安装 mysql-community-server- xx...
rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-server-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql-community-server-8.0.20-1.e################################# [100%]

  • 安装 mysql-community-devel- xx...
rpm -ivh mysql-community-devel-8.0.20-1.el7.x86_64.rpm --force --nodeps

警告:mysql-community-devel-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql-community-devel-8.0.20-1.el################################# [100%]

安装时可能出现的问题:

[root@xxxxxx MySQL]# rpm -ivh MySQL-community-test-8.0.20-1.el7.x86_64.rpm --nodeps
警告:MySQL-community-test-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
file /usr/bin/mysqld_safe from install of MySQL-community-test-8.0.20-1.el7.x86_64 conflicts with file from package mariadb-server-1:5.5.60-1.el7_5.x86_64
​ file /usr/bin/MySQLtest from install of ......
​ ......

错误说明:mysql-community-test-8.0.20-1.el7.x86_64安装的文件/usr/bin/mysql_safe与软件包 mariab-server-1:5.5.60-1.el7_5.x 中的文件冲突

问题原因:我们安装的 MySQL 和 mariab-server 发生了冲突。

解决方式:我选择的是方式一

  • 方式一:在安装的命令后面加上 --force --nodeps(强制安装)。
  • 方式二:卸载引起冲突的软件(文件:mariab-server)。

6.启动和停止 MySQL

  • 启动 MySQL,并查看 MySQL 服务状态。 (注意:使用安装包安装 MySQL 的话,默认的服务名称为:mysqld)
service mysqld start
# 或者
systemctl start mysqld
  • 查询 MySQL 服务器的状态:
service mysqld status
# 或者
systemctl status mysqld
  • MySQL 服务开启时的状态:

说明:Active: active (running) "活动(正在运行)的",Main PID: 39490(mysqld):表示 MySQL 占用的进程id。

  • MySQL 服务关闭时的状态:

说明:Active: inactive (dead) "不活动(死)的",Main PID: 39490(mysqld):表示 MySQL 占用的进程id。

  • 扩展命令 - 查询 MySQL 服务状态命令:
ps -ef|grep mysqld

  • 扩展命令 - 端口(3306)信息查询命令:
lsof -i:3306
  • 停止 MySQL 服务:
service mysqld stop
# 或者
systemctl stop mysqld

7.登录 MySQL 并修改密码

  • 查看临时密码(说明:在 "错误日志" 中,默认为:"/var/log/mysqld.log")
more /var/log/mysqld.log | grep "A temporary password"

  • 登录 MySQL
mysql -uroot -p

登录成功!

  • 修改密码策略

说明:mysql 8.0 的默认密码策略要求是比较严苛的,所以这里需要修改 "密码策略"。如果不修改的话,密码设置的过于简单的话,会出现错误 错误1819(HY000)密码不符合当前策略要求 的错误。

# 修改密码复杂级别
set global validate_password.policy=0;
# 修改密码长度
set global validate_password.length=1;

注意:以上两个系统变量 8.0 后做了变动,变量名不同了。(validate_password_policy 和 validate_password.policy )

  • MySQL 8.0 版本之前使用 validate_password_policy 和 validate_password_length。
  • MySQL 8.0 版本之后使用 validate_password.policy 和 validate_password.length。
  • 修改 root 密码
alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';

扩展 - 常见修改用户信息的方式:

  • 使用 "set password for" 修改用户密码:
set password for 'root'@'localhost' = 'supconit-mysql';
  • 使用 "alter user" 修改当前用户的密码:
alter user user() identified by 'supconit-mysql';
  • 使用 "update" 修改用户的ip访问权限:
update mysql.user set host = '%' where user = 'root' and host = 'localhost';

注意:使用 DML 语句修改用户密码,必须执行 "刷新权限" 命令也能生效。

flush privileges;
  • 使用(navicat等工具)远程登录登录

navicat下载:链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng 提取码:og7l

特别注意:在使用远程工具远程登录时连接不上。这时就有可能是服务器的防火墙没有关闭导致的!

  • 关闭防火墙
service firewalld stop
# 或者
systemctl stop firewalld

查看服务器的防火墙状态命令:

service firewalld status
# 或者
systemctl status firewalld
  • 防火墙开启时的状态:

说明:Active: active (running) "活动(正在运行)的"。

  • 防火墙关闭时的状态:

说明:Active: inactive (dead) "不活动(死)的"。

扩展 - 开启防火墙的命令:

service firewalld start
# 或者
systemctl start firewalld
  • 再次登录(使用远程工具)

肉还是别人家的香 - MySQL rpm 文件安装网上参考资料:https://blog.csdn.net/helpluozhao123/article/details/127217512

MySQL概述安装的更多相关文章

  1. 第一章 数据库概述、MySQL的安装和配置

      第一章 数据库概述.MySQL的安装和配置   1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...

  2. MySQL数据库(1)- 数据库概述、MySQL的安装与配置、初始SQL语句、MySQL创建用户和授权

    一.数据库概述 1.什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. 在计 ...

  3. MySQL概述与安装

    MySQL数据库 概要: 一.MySQL数据库的概述 二.MySQL数据库的搭建 三.MySQL数据库软件的使用 四.MySQL数据类型 五.MySQL数据库数据的操作 一.初始MySQL数据库 1. ...

  4. MySQL数据库安装,配置My.ini文件

    最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySql所以在配置的时候出现了一些问题,该篇 ...

  5. 数据库MySql的安装

    1.MySQL概述 MySQL最初是由“MySQL AB公司”开发的一套关系型数据库管理系统(RDBMS-Relation DataBase Management System).MySQL不仅是最流 ...

  6. MySQL数据库----安装

    一.基础部分 1.数据库是什么 之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上. 如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组 ...

  7. 第二百七十五节,MySQL数据库安装和介绍

    MySQL数据库安装 一.概述 1.什么是数据库 ? 答:数据的仓库,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 答:他们均是一种 ...

  8. 数据库 - 初识MySQL - 介绍/安装

    一.介绍: mysql数据库管理软件: 套接字:服务端,客户端:客户端可访问服务端得数据 1.支持并发:操作得是共享得数据 2.处理锁,数据安全,性能 3.用别人得软件,得照着别人得规范,组织自己得语 ...

  9. PHP开发环境&amp;MySQL下载安装及配置流程

    PHP开发环境&MySQL下载安装及配置流程 因工作须要,从0開始学PHP,前几天看完视频教程后開始搞开发环境,到今天才好.这里把安装配置流程梳理一下分享出来. 一.概述 要搭建一个开发环境无 ...

  10. MySQL 概述和基础

    # MySQL 概述 什么是数据库 存储数据的仓库 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站-- 提供数据库服务的软件 MySQL.Oracle.SQL Server.DB2.M ...

随机推荐

  1. VUE3、ElementPlus 重构若依vue2 表单构建功能

    Vue3 + ElementPlus + Vite 重构 若依Vue2 表单构建功能 若依官方的Vue3 版本发布已经有段时间了,就是这个表单构建功能一直没有安排计划去适配到Vue3! 前段时间公司需 ...

  2. AVR汇编(四):数据传送指令

    AVR汇编(四):数据传送指令 AVR指令主要分为五类:算术和逻辑指令.分支指令.位操作指令.数据传送指令.MCU控制指令,今天我们先来认识其中最常用的数据传送指令. 汇编程序的编写.编译和调试 学习 ...

  3. Jmeter逻辑控制器Switch Controller的用法

    一.概述 类似编程语言中的switch函数,Switch Controller根据给定的值n(可使用变量)选择执行其下的 第n+1个子节点. 作用:Switch Controller通过给该控制器中的 ...

  4. 《CTFshow-Web入门》03. Web 21~30

    @ 目录 web21 题解 原理 web22 题解 原理 web23 题解 原理 web24 题解 原理 web25 题解 原理 web26 题解 web27 题解 web28 题解 web29 题解 ...

  5. 如何使用Grid中的repeat函数

    在本文中,我们将探索 CSS Grid repeat() 函数的所有可能性,它允许我们高效地创建 Grid 列和行的模式,甚至无需媒体查询就可以创建响应式布局. 不要重复自己 通过 grid-temp ...

  6. QA|selenium在send_keys时报错dict object has no attribute ''|UI自动化测试

    Q:selenium在send_keys时报错dict object has no attribute 'send_keys',如下图 增加了print(type(e1))发现确实是字典类型,怪了,按 ...

  7. 手把手教你搭建springbootsecurity+jwt,全面了解

    研究了两周了springbootsecurity+jwt的使用,终于搭起来了,这里跟大家分享下. 首先,不了解jwt的可以提前去查下相关资料,我之前也有讲过,大家可以先看下:  https://www ...

  8. 如何使用Java + React计算个人所得税?

    前言 在报表数据处理中,Excel公式拥有强大而多样的功能,广泛应用于各个业务领域.无论是投资收益计算.财务报表编制还是保险收益估算,Excel公式都扮演着不可或缺的角色.传统的做法是直接依赖Exce ...

  9. [python] 第一个爬虫, 爬妹子写真集图片

    效果图 版本以及需要用到的第三方库 python 2.7 bs4 (安装命令: pip install bs4) - 代码 #!/usr/bin/env python #coding:UTF-8 #脚 ...

  10. Microsoft Build 2021大会开始后,Develop Blog一系列更新

    .NET BLOG 发布.NET 6预览版4 https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4/ 发布.NET MAUI ...