九五从零开始的运维之路(其二十六)

文章目录

  • 前言
  • 一、概述
    • 1.什么是数据库
    • 2.数据库能干什么
      • (一)企业应用
      • (二)金融行业
      • (三)电子商务
      • (四)社交媒体
      • (五)物联网
    • 3.为什么要用数据库,优势、特性?
      • (一)可靠性和稳定性
      • (二)数据管理能力
      • (三)数据共享和集成
      • (四)数据安全性和隐私保护
      • (五)减少数据冗余
  • 二、数据库类型
    • 1.关系型数据库,RDBMS
      • (一)概述
      • (二)特点
      • (三)代表产品
    • 2.非关系型数据库,NoSQL
      • (一)概述
      • (二)特点
      • (三)代表产品
  • 三、数据库模型
    • 1.层次型数据库模型
    • 2.网状型数据库模型
    • 3.关系型数据库模型
    • 4.非关系型模型
  • 四、MySQL安装
    • 1.yum/rpm安装
      • (一)下载安装包
      • (二)安装数据库服务
      • (三)问题解决
    • 2.yum安装mariadb
    • 3.源码安装
  • 五、mysql登录
    • 1.本地登录
    • 2.借助软件登录
  • 六、mysql配置
    • 1.数据库目录结构
      • (一)rpm安装
      • (二)源码安装
    • 2.主配置文件详解
  • 总结


前言

本篇将简述的内容:Linux系统下的MySQL服务的安装与简述


一、概述

1.什么是数据库

将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合(银行存款的信息、电话薄)
数据库是存储、管理和操作组织化数据的软件系统

2.数据库能干什么

(一)企业应用

存放用户数据、管理企业数据

(二)金融行业

存储分析客户的财务数据

(三)电子商务

存储产品信息、订单信息等

(四)社交媒体

存储社交消息数据

(五)物联网

物联网设备在云服务平台的数据存储

3.为什么要用数据库,优势、特性?

(一)可靠性和稳定性

现代数据库系统通常具有高度可靠性和稳定性,可以提供持久性和容错性,可以确保企业的数据安全性。

(二)数据管理能力

数据库系统提供了一种强大的方式来管理数据,从数据的存储到访问都进行统一的管理。企业可以更好地跟踪、管理和报告数据,从而使工作更加高效。

(三)数据共享和集成

企业常常需要从不同的部门和应用程序中收集信息和数据。通过使用数据库,这些数据可以集成在一起,使企业更容易理解业务、做出决策。

(四)数据安全性和隐私保护

企业往往会处理大量的机密数据,如个人信息、财务信息、业务数据等等。数据库管理系统可以提供安全的访问控制和数据保护功能,保护数据的隐私性和机密性。

(五)减少数据冗余

数据库技术可以帮助企业减少数据冗余和重复,提高数据的一致性、准确性和可重用性。

二、数据库类型

1.关系型数据库,RDBMS

(一)概述

关系型数据库是一种使用表格来展示和管理数据的数据库,关系型数据库的核心是数据之间的关系,因此也叫做“关系数据库”。RDBMS可以让用户很容易地使用和管理这些关系

(二)特点

便于查询和操作:SQL语句
结构化数据:使用行和列存放数据
数据的一致性和完整性:各种约束条件
并发性:支持多用户连接的隔离性

(三)代表产品

MySQL:
瑞典MYSQL AB公司开发,现由甲骨文公司管理
PostgreSQL:
PostgreSQL全球开发组开发的免费的开源的数据库管理系统

2.非关系型数据库,NoSQL

(一)概述

NoSQL(Not only SQL)是一种非关系型数据库模型,其数据存储和查询机制与传统的关系型数据库不同

(二)特点

非结构化数据:文本、图像、媒体等
分布式存储:分布在多个节点中,实现高并发
没有固定的规范模式:无需定义表和列,不强制要求结构
高可伸缩性:支持水平扩展,增加或删除节点
高性能:高速读写操作,比传统的关系型数据库效率要高

(三)代表产品

MongoDB:一款基于文档存储模型的非关系型数据库软件
Redis:一款基于内存存储的非关系型数据库,与MongoDB一样广泛应用于互联网领域, Redis常用于快速读写操作、缓存等场景

三、数据库模型

1.层次型数据库模型

	1966年,IBM研究员Codd提出层次结构模型
	它的数据结构如同树状结构。每个节点都只有一个父节点,但可以有多个子节点
	这种模型存在层次结构复杂、扩展性差、数据操作限制等问题

2.网状型数据库模型

1969年,CODASYL工作组发布了网络模型
它使用复杂链表来表示数据之间的关系,并增加了数据结构的灵活性和递归处理能力,从而解决了层次结构模型的一些问题
解决了层次结构模型的一些问题。但是网络模型需要了解复杂的物理存储结构,对程序设计人员的要求比较高

3.关系型数据库模型

1970年,Codd提出了关系型模型,也就是目前SQL和RDBMS所采用的模型
关系型模型基于二维表格的结构组织数据,每个表格称为关系,每行记录代表一个实体,每列记录代表一个属性。关系之间通过主键和外键进行关联
它具有数据结构简单、数据组织规范、数据操作强大、数据完整性可控等优点,是目前应用最广泛的数据库模型

4.非关系型模型

非关系模型是指在数据库中,数据的组织方式不是基于关系模型来建立的,而是通过其他的方式来组织和表示数据。
非关系模型相对于关系模型来说更加灵活,可以更好地适应不同类型的数据和应用需求。但同时,非关系模型也更加复杂,操作和查询数据的难度较高。

四、MySQL安装

1.yum/rpm安装

(一)下载安装包

wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

(二)安装数据库服务

rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum -y install mysql-server

(三)问题解决

1、安装mysql提示公钥未安装
提示信息

mysql-community-common-5.7.42-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-common-5.7.42-1.el7.x86_64

GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
分析原因:mysql密钥过期
解决办法:安装新的密钥然后再安装服务

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server

或者
不使用GPG密钥验证

yum -y install mysql-server --nogpgcheck

2、登录数据库时提示密码错误
提示信息

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

分析原因:输入的密码是错误的,所以拒绝你的访问
解决问题:
(一)使用随机密码登录
查看临时密码

grep 'temporary password' /var/log/mysqld.log

登录时使用查看到的随机密码

mysql -u root -p
Enter password: 输入随机密码

(二)自行重置密码
重置密码的第一步就是跳过MySQL的密码认证过程
进入数据库的配置文件

vim /etc/my.cnf

添加参数,不验证密码进入mysql

skip-grant-tables

接下来我们需要重启MySQL

systemctl restart mysqld

重新登录数据库时,直接按回车
查看数据库

show databases;

使用mysql数据表

use mysql;
修改root用户使用新的密码

alter user 'root'@'localhost' idnentified by '123..coM';

如果报错,先刷新配置,在删除原来的root用户,然后再执行创建的操作

flush privileges;
drop user 'root'@'localhost';
create  user  'root'@'localhost' identified by '123..coM';

赋予root权限

grant all privileges on *.* to 'root'@'localhost' with grant option;

刷新配置,退出数据库

flush privileges;
exit

恢复最开始的配置文件

vim /etc/my.cnf

去掉配置项

skip-grant-tables

重启mysql,然后使用新密码重新登录数据库

systemctl restart mysqld
mysql -uroot -p123..coM

2.yum安装mariadb

yum -y install mariadb mariadb-server
不使用配置文件越过密码验证,修改密码
mysqladmin -uroot -p password ‘新密码’

3.源码安装

注意事项
CPU最少2核以上
内存最少2G以上
swap分区2G以上
硬盘空间至少20G以上
安装前的准备
安装依赖包

yum -y install gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

下载安装包

cmake-3.9.1-Linux-x86_64.tar.gz

安装cmake,8.0版本的mysql需要cmake3.5版本以上。

gcc-6.3.0.tar.gz

8.0版本的mysql需要gcc版本为5.3以上

mysql-boost-8.0.13.tar.gz

下载带有boost的安装包
安装gcc/升级gcc
安装gcc依赖包

yum -y install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel glibc-headers

安装gcc

tar xf gcc-6.3.0.tar.xz
cd gcc-6.3.0/
./configure --disable-multilib && make && make install

这个编译会非常非常久,就慢慢等吧,如果有双核CPU可以使用make -j2,4核CPU可以使用make -j4可以大大提高编译速度。
安装mysql

tar xf mysql-boost-8.0.13.tar.gz
cd mysql-8.0.13/
cmake  -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DWITH_PAM=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_PLUGINDIR="/usr/local/mysql/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SSL=system \
-DWITH_BOOST=./boost
make -j2/4
make install

配置
创建数据库文件夹和日志文件夹,更改用户为mysql

useradd -s /sbin/nologin mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql/
mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql/
mkdir -p /var/run/mysql
chown -R mysql:mysql /var/run/mysql

修改配置文件my.cnf

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
!includedir /etc/my.cnf.d

初始化mysql数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/

随机密码会在提示信息中显示
复制服务文件到/etc/init.d目录下

cp /opt/mysql-8.0.20/support-files/mysql.server /etc/init.d/
chmod a+x /etc/init.d/mysql.server
/etc/init.d/mysql.server start

查看服务

netstat -anptl | grep mysql

登录数据库修改初始root密码

echo "export PATH=/usr/local/mysql/bin:$PATH:/usr/local/bin" >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
mysql -u root -p

在回车之后输入随机密码
修改密码

mysql> alter user 'root'@'localhost' identified with mysql_native_password BY '新密码';
mysql> flush privileges;

看到Query OK, 0 rows affected (0.00 sec)则操作成功
gcc的版本根据软件包的版本需求更新升级

五、mysql登录

1.本地登录

使用命令

2.借助软件登录

navicat

六、mysql配置

1.数据库目录结构

(一)rpm安装

mysql:存储MySQL的数据文件和表结构定义等。
mysql-files:存放需要MySQL账户权限的文件。
mysql-keyring:存放加密密钥,以供MySQL使用。
mysql.sock:MySQL服务器的Unix套接字文件。
ib_logfile0ib_logfile1:InnoDB引擎的事务日志文件。
ibdata1:InnoDB引擎的数据文件,包括表数据和索引等。
*.err:MySQL错误日志文件,记录MySQL运行时的错误和警告等信息。
*.pid:MySQL进程ID文件,存储MySQL进程的进程号。

(二)源码安装

mysql-/
├── extra/ # 额外的工具和脚本
├── include/ # 包含头文件
├── lib/ # 包含库文件
│ ├── libmysqlclient.so # MySQL 客户端库文件
│ └── libmysqld.so # MySQL 服务器端库文件
├── share/ # 包含共享文件
├── support-files/ # 包含初始化脚本和系统服务
│ ├── mysql.server # MySQL 服务启动脚本
│ ├── mysql.service # MySQL systemd 服务配置
│ └── … # 其他各种脚本和配置文件
├── bin/ # MySQL 二进制文件
│ ├── mysqld # MySQL 服务器二进制文件
│ ├── mysql # MySQL 客户端二进制文件
│ ├── mysqladmin # 管理 MySQL 服务器的工具
│ ├── mysqldump # 导出 MySQL 数据库的工具
│ └── … # 其他各种 MySQL 工具
├── man/ # MySQL 帮助手册
├── docs/ # MySQL 文档
├── sql/ # MySQL SQL 脚本文件
└── zlib/ # MySQL 所依赖的 zlib 库

2.主配置文件详解

主配置文件所在 /etc/my.cnf
[mysqld]
[mysqld]"表示该段配置是针对MySQL服务器的
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysql-error.log
pid-file=/var/run/mysql/mysql.pid
max_connections=500
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
[mysql]"中的配置项表示该段配置是针对MySQL客户端的
default-character-set=utf8mb4
拓展配置项
port:MySQL端口号
log_warnings:设置错误日志是否记录警告信息
slow_query_log_file:慢日志文件路径名
long_query_time:当查询时间超过指定的秒数时,会被记录到慢日志中
innodb_buffer_pool_size:InnoDB缓存池大小
join_buffer_size:用于JOIN操作的缓存大小
max_allowed_packet:MySQL允许传输的最大数据包大小
skip_name_resolve:禁用DNS解析


总结

以上是在Linux操作系统上安装MySQL的一般步骤总结。根据具体的Linux发行版和版本,可能会有一些细微的差异,但大致流程是相似的。在安装过程中,需要注意权限设置、依赖软件的安装和配置文件的修改等细节,以确保MySQL能够正常运行。

你可能感兴趣的:(#,运维,数据库)