翼度科技»论坛 编程开发 mysql 查看内容

MySQL概述安装

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
一,数据库概述

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
  1. rpm -qa|grep -i mysql
复制代码
显示一下内容说明安装了:
  1. MySQL-client-5.5.25a-1.rhel5
  2. MySQL-server-5.5.25a-1.rhel5
  3. ...
复制代码
停止MySQL服务,删除卸载安装的 MySQL。命令:rpm -e –-nodeps 包名
  1. rpm -ev MySQL-client-5.5.25a-1.rhel5
  2. rpm -ev MySQL-server-5.5.25a-1.rhel5
复制代码
2.查找MySQL的目录

查找 MySQL 目录(提示:现在很多都是使用编译的 MySQL 安装包进行安装的,所以查找文件是必须的)
  1. find / -name mysql
复制代码
具体要根据个人的情况,删除对应的 mysql 目录(注意:宁可不删,不可乱删!)。
注意:/etc/my.cnf 不会删除,需要进行手工删除。
  1. rm -rf /etc/my.cnf
复制代码
3.检查是否卸载成功

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

  • 检查安装情况
  1. rpm -qa|grep -i mysql
复制代码

  • 检查 MySQL 配置文件情况
  1. find / -name /etc/my.cnf
复制代码
无结果说明卸载(删除)成功!
三,Linux下安装MySQL数据库 - 二进制文件


  • 基本介绍:
    ​        本次是在Linux下安装MySQL数据库。无需编译安装,解压后初始化即可使用。
    ​        本次演示的MySQL版本为: MySQL Community Server 8.0.20
1.查看环境信息



  • 查看 linux 内核版本的命令:
  1. uname -a
复制代码
uname 命令选项:

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

  • 查看Linux操作系统版本的命令:
  1. # 查看Linux系统版本的命令
  2. lsb_release -a
  3. # 或者
  4. cat /etc/redhat-release
复制代码
本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系统版本
扩展 - Redhat系的Linux系统请使用:
  1. 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 方式进行下载:
  1. wget https://cdn.MySQL.com/archives/MySQL-8.0/MySQL-8.0.20-linux-glibc2.12-x86_64.tar.xz
复制代码
3.上传安装包并解压


  • 创建安装文件夹
  1. mkdir -p /usr/local/mysql
复制代码

  • 将 MySQL 安装文件上传到 "/usr/local/mysql" 文件夹下,并解压:
注意:从 MySQL 8.0 开始下载的安装包是 ".xz" 结尾的了,需要先使用 xz 命令处理。
  1. xz -d mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
复制代码
解压 tar压缩包 命令:
  1. tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar
复制代码


  • 文件解压后重命名(提示:该步骤根据个人习惯)
  1. mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
复制代码

  • 看一下现在的 MySQL 安装文件的名称和所在路径。
  1. pwd
复制代码

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


  • 检查 libaio 库是否安装。
说明:MySQL 依赖 libaio 库,如果未在本地安装此库,则数据库初始化和后续的服务器启动步骤将会失败。
如果未安装,在初始化时可能遇到下面的报错:
  1. ./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directoryx
复制代码
libaio 检查命令:
  1. whereis libaio.so.1
复制代码

出现以上结果说明 libaio 库已经安装。
如果没有找到 "libaio.so.1" 文件,就要手动安装 libaio 库。
方式1:yum 安装。
  1. 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/。
将安装包上传到服务器执行以下命令安装。
  1. rpm -ivh libaio-0.3.109-13.el7.i686.rpm
复制代码
安装之后请再次执行 "whereis libaio.so.1" 命令再次检查是否安装成功。


  • 检查 和 卸载系统自带的 Mariadb
  1. rpm -qa|grep mariadb
复制代码

出现以上结果说明系统中安装了 mariadb。
  1. # 强制卸载 mariadb
  2. rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
复制代码
卸载之后请再次执行 "rpm -qa|grep mariadb" 检查是否卸载成功。


  • 创建 mysql 组 及 mysql 用户,并授权。


  • 创建 mysql 组命令。
  1. groupadd mysql
复制代码

  • 创建 mysql 用户以及加入到 mysql 组中。
  1. useradd -r -g mysql mysql
复制代码
说明:所有的文件和目录都应该在 mysql 用户下(扩展:useradd 中的 "-r" 表示建立为系统帐号)。


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



  • 为 mysql 用户授于 "数据目录(/usr/local/mysql/data)" 权限:
  1. chown -R mysql:mysql /usr/local/mysql/data
复制代码

  • 为 mysql 用户授于 "MySQL 安装目录(/usr/local/mysql/mysql)" 权限:
  1. chown -R mysql:mysql /usr/local/mysql/mysql
复制代码


  • 配置 "my.cnf" 文件
说明:"my.cnf" 文件是 MySQL 的默认配置文件,位于 "/etc/my.cnf"。
  1. vi /etc/my.cnf
复制代码
打开 "my.cnf" 文件将下面配置粘贴进去。
  1. [mysqld]
  2. bind-address=0.0.0.0
  3. port=3306
  4. user=mysql
  5. basedir=/usr/local/mysql/mysql #指定的是MySQL安装目录
  6. datadir=/usr/local/mysql/data #指定的是MySQL数据目录
  7. socket=/tmp/mysql.sock # MySQL 的socket文件
  8. log-error=/usr/local/mysql/data/mysql.err #错误日志存放文件
  9. pid-file=/usr/local/mysql/data/mysql.pid # MySQL 服务进程的pid文件
  10. #skip_ssl #关闭SSL加密连接
  11. character_set_server=utf8mb4 # 设置全局的字符集类型
  12. symbolic-links=0 # 开启数据软连接
  13. explicit_defaults_for_timestamp=true
  14. lower_case_table_names=1 # 设置表名大小不敏感。(MySQL在windows下,默认是对表名大小写不敏感的,但是在Linux下是大小写敏感的)
  15. # 修改使用 "mysql_native_password"(之前的密码认证插件)插件作为认证加密方式
  16. # default_authentication_plugin=mysql_native_password # MySQL8.0 默认认证加密方式为 "caching_sha2_password"
  17. #skip-grant-tables #免密码登陆,注意这时候是没有端口的
复制代码

  • basedir:指定的是 MySQL 的 "安装目录"。
  • datadir:指定的是 MySQL 的 "数据目录"。
  • socket:MySQL 的socket文件(注意:建议指向"/tmp/mysql.sock",不然的话可能会在连接 MySQL 时会出现错误!)。
错误信息:
  1. 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),除本机外其他客户端无法连接。
  1. # MySQL8.0 默认认证加密方式为 "caching_sha2_password" ,为了和之前的版本匹配,需要修改为 "mysql_native_password" 插件作为认证加密方式
  2. default_authentication_plugin=mysql_native_password
复制代码
5.初始化数据库


  • 进入MySQL 安装目录中的 bin目录下:
  1. cd /usr/local/mysql/mysql/bin
复制代码

  • 执行初始化 MySQL 命令:
  1. ./mysqld --defaults-file=/etc/my.cnf --initialize
复制代码


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


  • 将启动脚本 "mysql.server" 复制为 "/etc/init.d/mysql"
  1. cp /usr/local/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
复制代码

  • 为 MySQL 配置 PATH 环境变量(执行 MySQL 等命令时不需要带路径)

  • 打开环境变量 "/root/.bash_profile" 文件:
  1. vi /root/.bash_profile
复制代码

  • 添加 MySQL 的环境变量:
  1. :/usr/local/mysql/mysql/bin # MySQL的 "安装目录/bin" 添加到 PATH 之后,说明这里已":"号为分隔符
复制代码

  • 刷新配置文件,使配置生效:
  1. source /root/.bash_profile
复制代码
6.启动和停止 MySQL


  • 启动 MySQL,并查看 MySQL 服务状态。
  1. service mysql start
  2. # 或者
  3. systemctl start mysql
复制代码



  • 查询 MySQL 服务器的状态:
  1. service mysql status
  2. # 或者
  3. systemctl status mysql
复制代码


  • 查询 MySQL 服务状态命令
  1. ps -ef|grep mysql
复制代码

  • 扩展命令 - 端口(3306)信息查询命令:
  1. lsof -i:3306
复制代码


  • 停止 MySQL 服务:
  1. service mysql stop
  2. # 或者
  3. systemctl stop mysql
复制代码

7.登录 MySQL 并修改密码


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


  • 进入 MySQL 安装目录中的bin目录下:
  1. cd /usr/local/mysql/mysql/bin
复制代码

  • 执行 mysql 命令登录到 MySQL 数据库,密码为初始化数据库时的密码。
  1. ./mysql -u root -p
复制代码

  • 修改 root 密码
  1. alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';
复制代码
扩展 - 常见修改用户信息的方式:

  • 使用 "set password for" 修改用户密码:
  1. set password for 'root'@'localhost' = 'supconit-mysql';
复制代码

  • 使用 "alter user" 修改当前用户的密码:
  1. alter user user() identified by 'supconit-mysql';
复制代码

  • 使用 "update" 修改用户的ip访问权限:
  1. update mysql.user set host = '%' where user = 'root' and host = 'localhost';
复制代码
注意:使用 DML 语句修改用户密码,必须执行 "刷新权限" 命令也能生效。
  1. flush privileges;
复制代码


  • 使用(navicat等工具)远程登录登录
navicat下载:链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng  提取码:og7l

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


  • 关闭防火墙
  1. service firewalld stop
  2. # 或者
  3. systemctl stop firewalld
复制代码
查看服务器的防火墙状态命令:
  1. service firewalld status
  2. # 或者
  3. systemctl status firewalld
复制代码

  • 防火墙开启时的状态:

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

  • 防火墙关闭时的状态:

说明:Active: inactive (dead) "不活动(死)的"。
扩展 - 开启防火墙的命令:
  1. service firewalld start
  2. # 或者
  3. 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 用户授权。
  1. mkdir /var/log/mariadb
复制代码
  1. touch /var/log/mariadb/mariadb.log
复制代码
  1. 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 。
  1. 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 命令查找方法:
  1. 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 内核版本的命令:
  1. uname -a
复制代码
uname 命令选项:

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

  • 查看Linux操作系统版本的命令:
  1. # 查看Linux系统版本的命令
  2. lsb_release -a
  3. # 或者
  4. cat /etc/redhat-release
复制代码
本文章使用的是:CentOS Linux release 7.6.1810 (Core) 操作系统版本
扩展 - Redhat系的Linux系统请使用:
  1. cat /etc/issue
复制代码
2.需要安装基础工具

如果你的服务器可以连接外网,并且 yum 可以正常使用,直接运行下面一条命令即可。
  1. yum install -y net-tools perl libaio openssl gcc pcre-devel zlib-devel openssl vim openssl-devel
复制代码
那如果你非常的不幸,要网没网 yum 库还中用的话!祝你好运!所有 rpm 安装包都有的网址:https://pkgs.org/ 直接在页面上搜索即可得到你想要的安装包。


  • 检查 - 安装 gcc 工具库:
  1. 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" 下。
  1. mkdir /usr/local/gcc
复制代码
进入目录 "/usr/local/gcc" 解压 gcc-7.5.0.tar.xz。
  1. xz -d gcc-7.5.0.tar.xz
复制代码
  1. tar -xvf gcc-7.5.0.tar
复制代码
进入解压目录 /gcc-7.5.0,下载依赖(自动下载依赖)。注意:此时,电脑网络必须保证是正常的。
  1. cd gcc-7.5.0
复制代码
  1. ./contrib/download_prerequisites
复制代码
建立文件夹 build,并进入配置,生成 Makefile 文件即安装配置文件
  1. mkdir /usr/local/gcc/gcc-7.5.0/build
复制代码
  1. cd /usr/local/gcc/gcc-7.5.0/build
复制代码
  1. ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
复制代码
编译安装
  1. make & make install
复制代码
删除老版本,为新版本创建软链接
  1. rm -rf /usr/bin/gcc
  2. rm -rf /usr/bin/g++
  3. rm -rf /usr/lib64/libstdc++.so.6
复制代码
创建文件夹映射链接 -- 注意这里要按你们自己的配置来
  1. ln -sf /usr/local/bin/gcc /usr/bin/gcc
  2. ln -sf /usr/local/bin/g++ /usr/bin/g++
复制代码
动态库软链接
  1. ln -sf /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
  2. ln -sf /usr/local/include/c++/7.5.0 /usr/include/c++/7.5.0
复制代码
注意:文件链接的设置根据实际的情况配置。
重启服务器,再次查看gcc版本
  1. reboot
复制代码
  1. gcc -v
复制代码


  • 检查 - 安装 openssl-devel 工具库:
  1. openssl version
复制代码

可以看到是有的,并且系统自带的版本是 openssl-1.0.2k。
注意:如果你的电脑上没有 openssl-devel 的话,就需要安装一个。否则可能会导致 MySQL 安装失败!


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

  • 方式一: 使用 yum 安装
  1. yum install openssl openssl-devel
复制代码
注意:该方式必须保证 yum 命令正常(有外网)的情况下使用。

  • 方式二:下载安装包安装(离线安装)
说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。
下载需要的 ncurses 版本,下载地址:https://www.openssl.org/source/old/
上传 ncurses-5.9.tar.gz 到服务器的 "/usr/local/openssl" 下
  1. mkdir /usr/local/openssl
复制代码
进入目录 "/usr/local/openssl" 解压 openssl-1.1.1.tar.gz
  1. tar -zxvf openssl-1.1.1.tar.gz
复制代码
进入解压目录 openssl-1.1.1(完整路径为:/usr/local/openssl/openssl-1.1.1)
  1. cd openssl-1.1.1/
复制代码
根据系统环境制作安装配置文件
  1. ./config --prefix=/usr/local/openssl
复制代码
安装配置文件
  1. ./config -t
复制代码
编译安装
  1. make & make install
复制代码


  • 知识扩展 -升级 openssl 版本:
备份旧版本:
  1. mv /usr/bin/openssl /usr/bin/openssl.bak
  2. mv /usr/include/openssl /usr/include/openssl.bak
复制代码
建立新版本的软链接:
  1. # 命令目录软链接
  2. ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  3. ln -s /usr/local/openssl/include/openssl /usr/include/openssl
复制代码
  1. # 动态库软链接
  2. ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
  3. ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
复制代码
将 openssl 的 lib 目录追加到 "ld.so.conf" 文件中
  1. echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
复制代码
刷新动态链接库:
  1. ldconfig -v
复制代码
说明:如需使用新版本,则需替换原来的软链接指向,即替换原动态库,进行版本升级。


  • 检查 - 安装 cmake 工具库:
  1. cmake -version
复制代码

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


  • 安装 cmake 说明(离线安装):
说明:以下安装方式是使用源码安装,解压后需要 "编译"-"安装"。
gcc 等必备程序包,如果没有 gcc 请先安装 gcc 等程序包。
  1. 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" 下。
  1. mkdir /usr/local/cmake
复制代码
进入目录 "/usr/local/cmake" 解压 cmake-2.8.10.2.tar.gz
  1. cd /usr/local/cmake
复制代码
  1. tar -zxvf cmake-2.8.10.2.tar.gz
复制代码
进入解压目录 cmake-2.8.10.2(完整路径为:/usr/local/cmake/cmake-2.8.10.2),运行 "bootstrap" 或者 "configure" 文件。
  1. cd cmake-2.8.10.2/
复制代码
安装配置文件
  1. ./bootstrap
  2. # 或者
  3. ./configure
复制代码
编译安装(这步时间有点长)
  1. gmak & gmake install
复制代码
再次查看 cmake 版本
  1. cmake -version
复制代码



  • 知识扩展 -升级 cmake 版本:
说明:以下安装方式是使用通用 "二进制文件安装",解压即用。
下载需要的 cmake 版本,下载地址:https://cmake.org/files/  或者 https://cmake.org/download/
上传 cmake-3.15.5-Linux-x86_64.tar.gz 到服务器的 "/usr/local/cmake" 下
  1. mkdir /usr/local/cmake
复制代码
进入目录(/usr/local/cmake)解压 cmake-3.15.5-Linux-x86_64.tar.gz
  1. tar -zxvf cmake-3.15.5-Linux-x86_64.tar.gz
复制代码
删除老版本,为新版本的文件链接:
  1. # 删除老的 cmake
  2. rm -rf /usr/bin/cmake
复制代码
  1. # 通过建立链接 -替换 cmake
  2. ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
复制代码
再次查看 cmake 版本
  1. cmake -version
复制代码


  • 检查 - 安装 ncuress-devel 工具库:
**查看电脑上是否安装了 ncurses **
  1. rpm -qa | grep ncurses
复制代码

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

  • 方式一: 使用 yum 安装
  1. 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 的安装包上传到服务器
安装命令:
  1. 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" 下
  1. mkdir /usr/local/ncurses
复制代码
进入目录 "/usr/local/ncurses" 解压 ncurses-5.9.tar.gz
  1. tar -zxvf ncurses-5.9.tar.gz
复制代码
进入解压目录 /ncurses-6.1(完整路径为:/usr/local/ncurses/ncurses-5.9)
  1. cd ncurses-5.9/
复制代码
安装配置文件
  1. ./configure
复制代码
编译
  1. make
复制代码
安装
  1. make install
复制代码
**看到界面最后输出:表示 ncurses-devel 依赖就装好了。 **
  1. installing ./cursesapp.h in /home/wlf/ncurses/include/ncurses
  2. installing ./cursesf.h in /home/wlf/ncurses/include/ncurses
  3. installing ./cursesm.h in /home/wlf/ncurses/include/ncurses
  4. installing ./cursesp.h in /home/wlf/ncurses/include/ncurses
  5. installing ./cursesw.h in /home/wlf/ncurses/include/ncurses
  6. installing ./cursslk.h in /home/wlf/ncurses/include/ncurses
  7. installing etip.h in /home/wlf/ncurses/include/ncurses
  8. 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" 文件夹下。
  1. mkdir /usr/local/mysql
复制代码

  • 进入目录 "/usr/local/mysql" 解压安装包。
  1. 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
安装命令语法如下:
  1. rpm -ivh mysql-xxx.rpm --nodeps
复制代码


  • 安装 mysql-community-common- xx...
  1. 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...
  1. 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...
  1. 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...
  1. 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...
  1. 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...
  1. 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%]
安装时可能出现的问题:
  1. [root@xxxxxx MySQL]# rpm -ivh MySQL-community-test-8.0.20-1.el7.x86_64.rpm --nodeps
  2. 警告:MySQL-community-test-8.0.20-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  3. 准备中...                          ################################# [100%]
  4. 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
  5. ​        file /usr/bin/MySQLtest from install of ......
  6. ​        ......
复制代码
错误说明: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)
  1. service mysqld start
  2. # 或者
  3. systemctl start mysqld
复制代码

  • 查询 MySQL 服务器的状态:
  1. service mysqld status
  2. # 或者
  3. systemctl status mysqld
复制代码


  • MySQL 服务开启时的状态:

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

  • MySQL 服务关闭时的状态:

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


  • 扩展命令 - 查询 MySQL 服务状态命令:
  1. ps -ef|grep mysqld
复制代码


  • 扩展命令 - 端口(3306)信息查询命令:
  1. lsof -i:3306
复制代码


  • 停止 MySQL 服务:
  1. service mysqld stop
  2. # 或者
  3. systemctl stop mysqld
复制代码
7.登录 MySQL 并修改密码


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


  • 登录 MySQL
  1. mysql -uroot -p
复制代码

登录成功!

  • 修改密码策略
说明:mysql 8.0 的默认密码策略要求是比较严苛的,所以这里需要修改 "密码策略"。如果不修改的话,密码设置的过于简单的话,会出现错误 错误1819(HY000)密码不符合当前策略要求 的错误。
  1. # 修改密码复杂级别
  2. set global validate_password.policy=0;
复制代码
  1. # 修改密码长度
  2. 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 密码
  1. alter user 'root'@'localhost' identified with mysql_native_password by 'supconit-mysql';
复制代码
扩展 - 常见修改用户信息的方式:

  • 使用 "set password for" 修改用户密码:
  1. set password for 'root'@'localhost' = 'supconit-mysql';
复制代码

  • 使用 "alter user" 修改当前用户的密码:
  1. alter user user() identified by 'supconit-mysql';
复制代码

  • 使用 "update" 修改用户的ip访问权限:
  1. update mysql.user set host = '%' where user = 'root' and host = 'localhost';
复制代码
注意:使用 DML 语句修改用户密码,必须执行 "刷新权限" 命令也能生效。
  1. flush privileges;
复制代码


  • 使用(navicat等工具)远程登录登录
navicat下载:链接:https://pan.baidu.com/s/1aknIUwy2L1Ws2uYL88COng  提取码:og7l

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


  • 关闭防火墙
  1. service firewalld stop
  2. # 或者
  3. systemctl stop firewalld
复制代码
查看服务器的防火墙状态命令:
  1. service firewalld status
  2. # 或者
  3. systemctl status firewalld
复制代码

  • 防火墙开启时的状态:

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

  • 防火墙关闭时的状态:

说明:Active: inactive (dead) "不活动(死)的"。
扩展 - 开启防火墙的命令:
  1. service firewalld start
  2. # 或者
  3. systemctl start firewalld
复制代码


  • 再次登录(使用远程工具)

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

来源:https://www.cnblogs.com/xiaolindang/p/17115886.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具