MySQL概述安装
一,数据库概述
1.为什么要使用数据库
-
将数据持久化。
-
持久化主要作用:是将内存中的数据库存储在关系型数据库中,本质也就是存储在磁盘文件中。
-
数据库在横向上的存储数据的条数,以及在纵向上存储数据的丰富度,都要好于其他介质。
2.数据库与数据库管理系统
1.数据库的相关概念
-
DB:数据库(Database)即为存储数据的 “仓库”,其本质是一个文件系统。
-
DBMS:数据库管理系统。是一种操作和管理数据库的大型软件。用于建立,使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
-
SQL:结构化查询语言,专门用来与数据库通信的语言。
2.DB 与 DBMS 的关系
数据库管理系统(DBMS)可以管理多个数据库,一个管理系统对应一个或多个数据库,一个数据库对应多个表,一张表对应多条数据,一条数据对应多个字段。
3.常见的数据库管理系统排名(DBMS)
查看排名的网站:https://db-engines.com/en/ranking
3 关系型数据于非关系型数据库
1.关系型数据库 - RDBMS
- 该类型数据库是 "最古老" 的数据库类型,是将复杂的数据结构,归结为简单的二维表格形式。
- 关系型数据库,是以 "行-row" 和 "列-column" 的形式存储数据。一系列的 "行" 和 "列" 称为 “表” ,一组表组成一个 "库-database"。
- 表与表之间的数据记录是有关系的。关系型数据库,也就是建立在 "关系模型" 基础上的数据库。
- 使用 SQL 语言查询数据。
- 优势:
- 复杂查询:使用 SQL 语句方便在一个表或多个表之间做非常复杂的数据查询。
- 事务支持:数据库安全性高,等...
2.非关系型数据库 - N-RDBMS
非关系型数据库,是传统关系型数据库,舍得版本。基于键值对存储数据,不需要经过 SQL 语言的解析,"性能非常高"。同时,通过减少不常用的功能,从而提供性能。
- 非关系型数据库的种类:
- 键值型数据库:Redis。
- 文档型数据库:MongoDB。
- 搜索引擎数据库:Elasticsearch。
- 列式数据库:HBase。
- 图形数据库:Neo4J。
- 其他类型的非关系数据库等...
4.关系型数据库设计规则
- 关系型数据库的典型数据结构就是 "数据表" ,这些 "数据表" 组成都是结构化的。
- 将数据放到表中,表再放到库中。
- 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名要具有唯一性。
- 表具有一些特性,这些特性定义了数据在表中如何存储,类似就 JAVA 和 Python 中 "类" 的设计
1.表,行,列
ORM-面向对象思想(对象关系映射):
- 数据库中的一个表 <----对应----> JAVA 中的一个类。
- 表中的一条数据 <----对应----> 类的一个对象实例。
- 表中的一个列 <----对应----> 类中的一个属性,成员变量。
2.表的关联关系
表与表之间的数据记录是存在关系的,一般这种使用 "关系模型" 来表示。常见的有以下四种关联关系:
- 一对一关联(一个人员对应一个用户)。
- 一对多关联(一个图层对应多个点位)。
- 多对多关联(一个用户对应多个角色,一个角色对应多个用户)。
- 自我引用(类别表)。
1.一对一关联
- 可用于优化查询数据。
当一张表中的字段(列)太多时,在查询时会造成大量内存冗余。查询效率低。因此我们可以根据(常用字段或者说常用业务)将表拆为两张或多张表,表之间的关系是:"一对一的关系",从而提高查询效率。
- 两种建表原则:
- 外键唯一:"主表" 的主键对应 "从表" 的外键(唯一),形成主外键关系,外键唯一。
- 外键是主键:"主表" 的主键和 "从表" 的主键,形成主外键关系。
2. 一对多关联
- 可用于存储数据关系为一对多的数据,例如:图层表对应多条点位数据。
建表原则:在 "从表-图层表" 创建一个字段,该字段作为外键指向 "主表-点位表" 的主键,建立一对多的关系。
3.多对多关联
建表原则:要表示多对多关系,必须创建第三张表,该表通常称为 "联接表/中间表",该表将多对多关系划分为两个一对多关系,将这两个表的主键都插入到第三个表中,从而建立关系。这个 "多" 在 "中间表" 中体现。
4.自我引用
- 可用于存储数据结构为树形结构的数据,例如:户籍中父子关系,公司中部门关系等...
建表原则:在表中创建一个 "自我引入" 字段引用表中其他数据的主键,建立关系。
前言
常见的 MySQL 安装共有五种方式,分别是:
-
软件仓库(yum 或 apt)安装。
-
rpm 或 deb 文件安装。
-
通用二进制文件安装。
-
Docker 安装。
如有需要使用 "Docker" 安装 MySQL 的话,请参阅:https://hub.docker.com/r/mysql/mysql-server/
- 源代码编译(定制化)。
如有需要 "定制化" 或 "自主扩展" 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 等命令时不需要带路径)
- 打开环境变量 "/root/.bash_profile" 文件:
vi /root/.bash_profile
- 添加 MySQL 的环境变量:
:/usr/local/mysql/mysql/bin # MySQL的 "安装目录/bin" 添加到 PATH 之后,说明这里已":"号为分隔符
- 刷新配置文件,使配置生效:
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 写入到该文件中。
- 查询 MySQL 服务进程的 pid 。
ps -ef |grep mysql
- 在指定的文件夹下创建文件。
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 时一定要按照顺序安装。否则会安装失败。
安装顺序:
- mysql-community-common-xxx-xx.rpm
- mysql-community-test-xxx-xx.rpm
- mysql-community-libs-xxx-xx.rpm
- mysql-community-client-xxx-xx.rpm
- mysql-community-server-xxx-xx.rpm
- 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