MySQL数据库__手撕安装二进制包_5.7.26

以下内容是学习 MySQL数据库应用 过程中总结的一些内容提要,供以后自己复现使用。


  • 首先应该具备得职业素养

    • 人品
    责任-----权利**
    
    • 严谨
    数据库修改\删除类的命令时 再三考虑,而且要有理论或者实践的支撑
    
    • 细心
    把最简单的事情做的最漂亮,最专业。
    
    • 心态

1. 熟悉操作系统(精通)

Linux centos6/7/8

2. 熟悉云架构

Docker

3. 熟悉业务

  • 产品的功能

  • 用户行为:

     	针对不同的业务去设计对应业务的架构等
    

4. 熟悉行业

活动行APP 等可以参加
  • 版本

  • 数据库产品类型

5. 运维DBA工作内容

  • 初级DBA:
    安装配置,基本使用,基本故障处理

  • 中级DBA:
    体系结构、备份策略涉及,故障恢复,基础高可用的运维(搭建、监控、故障处理、架构演变)、基础优化(索引、执行计划、慢日志)

  • 高级DBA:
    高可用架构(设计、实施、运维)、高性能架构(读写分离,分库、分表,分布式)、整体数据库优化(基于业务的SQL优化)


第一章 数据库产品介绍

1.什么是数据?

数据:文字、图片、视频.
计算机:二进制、16进制的机器语言
基于数据的重要性和复杂性的不同,我们可能有不同的管理方式。

哪些数据是适合存储到数据库的呢?
重要性比较高的
关系较复杂的数据

2. 数据库管理系统 (DBMS)?

(database management service)

  • 种类:

RDBMS:关系型数据库
NoSQL:非关系型数据

2.1 RDBMS与NOSQL (需要熟悉)

  • RDBMS和NoSQL基本特点
  • 产品介绍(熟悉)

1.RDBMS:

种类: Oracle、mysql、mssql(SQL Server)、PG(postgresql) 特点:
以多张二维表的方式来存储,又给多张表建立了一定关系.

数据安全性要求较高的应用场景

在这里插入图片描述

2.NoSQL:

种类: redis、mongodb、memcache、Hbase、neo4j 特点: 简单,快,适合做缓存数据库

针对性能要求较高,数据安全性要求不是太高的场景,一般是配合RDBMS使用的产品
在这里插入图片描述
关系型与非关系型数据库的对比

在这里插入图片描述

3.数据库管理系统种类

RDBMS: 关系型数据库管理系统
比较适合于,安全级别要求高的数据以及关系较复杂的数据
Oracle
MySQL
PG
MSSQL


NoSQL:非关系型数据库管理系统
适合于高性能存取数据,一般是配合RDBMS进行使用的
针对大数据处理分析,分布式架构更加擅长
MongoDB 	--->文档(document)
Redis
ES
Memcached


NewSQL: 分布式

RDS,DRDS --->AliSQL   TDDL
PolarDB     ----> OB (金融级别的数据库 蚂蚁金服)
PinCAP  TiDB
TDSQL 腾讯

4. MySQL 产品分支

Oracle MySQL (甲骨文公司 74亿美金)
MariaDB (原版作者 重新研发)5.5 —> 10.0版本号
Percona MySQL(解决MySQL 的乙方公司)
RDS (阿里云数据库)
TDSQL (腾讯)

大家都是从mysql演变来

5. MySQL 版本选择

5.6

5.6.34 		5.6.36 		5.6.38

5.7

5.7.18		5.7.20		5.7.22 		5.7.24

8.0

8.0.11

GA时间:5.6.38 5.7.20 2017-04-13
5.7.26 下载地址

6. Mysql 5.7.26 二进制版本手撕安装

  • 规划:

    • OS: Centos 7.6
    • 磁盘: 20G(system)+50G(/data)
    • IP: 10.0.0.51
    • hostname: db01
    • /etc/hosts : 10.0.0.51 db01
    • iptables: OFF
    • SELINUX: disabled

6.1 数据目录规划

新的环境 添加数据盘
[root@db01 ~]# mkdir /data/mysql/data -p

[root@db01 ~]# mkfs.xfs  /dev/sdb
[root@db01 ~]# blkid
/dev/sda1: UUID="fd2e0ca7-32be-425f-86a2-85c02b9ec5ea" TYPE="xfs" 
/dev/sda2: UUID="79a3924b-739e-48dc-ab0c-0444b9ac6591" TYPE="swap" 
/dev/sda3: UUID="3a3a295f-88f8-456d-94dc-1a3eeb517c02" TYPE="xfs" 
/dev/sdb: UUID="8c6d28bb-4c6e-4ea3-a59d-5a256b3b56fc" TYPE="xfs" 
[root@db01 ~]# vim /etc/fstab 
添加:
UUID="8c6d28bb-4c6e-4ea3-a59d-5a256b3b56fc" /data                 xfs     defaults        0 0

PS:把自己的UUID看好再复制上去

[root@db01 ~]# mount -a
[root@db01 ~]# df -h

6.2 软件上传解压

[root@db01 /usr/local]# rz -E
[root@db01 /usr/local]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 /usr/local]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
改名或者做成软连接
[root@db01 /usr/local]# ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql mysql

6.3 原始环境检查

卸载其他的数据库依赖
[root@db01 ~]# rpm -qa |grep mariadb
[root@db01 ~]# yum remove mariadb-libs -y

6.4 用户权限准备

[root@db01 /etc]# useradd -s /sbin/nologin -M mysql

[root@db01 /etc]# chown -R mysql.mysql /data
[root@db01 /etc]# chown -R mysql.mysql /usr/local/mysql

6.5 环境变量设置

如果是yum下载的话就不需要给配置变量

vim /etc/profile
添加:
export PATH=/usr/local/mysql/bin:$PATH

source /etc/profile

[root@db01 ~]# mysql -V
[root@db01 ~]# echo $PATH

6.6 设置用户/路径

5.7+ : 
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data  

报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因: Linux系统中缺少libaio-devel 软件包
解决:
[root@db01 ~]# yum install -y libaio-devel
 
说明:
--initialize             使用一种安全的模式初始化数据.   
特点:   1. 初始密码   2. 密码复杂度    3. 密码过期时间??

--initialize-insecure    使用一种不安全的模式初始化数据.
1. 无密码    2. 无密码复杂度  

5.7-:
使用它自带一个脚本进行
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

报错2:

报错原因:
在/data/mysql 存在文件
解决:
在这里插入图片描述

rm -rf /data/mysql/data/*
rm -rf /data/*

重新初始化

6.7 编辑mysql配置文件

[root@db01 ~]# vim /etc/my.cnf

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock

6.8 启动关闭数据库

start/stop/restart

[root@db01 ~]# cd /usr/local/mysql/support-files/ 
[root@db01 support-files]# ./mysql.server restart
 
 ERROR! MySQL server PID file could not be found!
Starting MySQL. SUCCESS! 

6.9 设置开机自启动

第一种方法:
cp mysql.server  /etc/init.d/mysqld
chkconfig --add mysqld
systemctl restart mysqld
start/stop/restart

注意:将原来模式启动mysqld先关闭,然后再用systemd管理。

第二种方法:
vim /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

8. 物理存储结构

宏观:

MyISAM存储引擎
在这里插入图片描述
user.frm : 表结构
user.MYD : 表数据
user.MYI : 索引

InnoDB 存储引擎表 :
time_zone.frm : 表结构
time_zone.ibd : 数据 + 索引(IOT)

微观:

5.5 版本以上 默认都是 InnoDB 存储引擎表

  • segment (段) :一个(非分区表)表就是一个段,由一个或者多个区构成.
  • extent(区) :连续的64个page,默认1M
  • page(页) : MySQl的最小物理IO单元,默认16KB,连续的4个OS block,连续的32个扇区
    IO 磁盘和内存之间的交互

9.MySQL 逻辑结构

感谢五行哥的图片

库 ===》 目录
表 ===》 表文件

列 : 列名 + 列属性 (约束,数据类型,其他属性)叫字段
行 : 记录
属性 : 数据行,权限等…

10. MySQL 基础管理

10.1 MySQL 的用户管理

10.1.1 作用
  • 登录
  • 管理数据库逻辑对象
10.1.2 用户的定义
用户名@'白名单'
允许用户登录的”范围“   =  	IP段

白名单支持的方式?
wordpress@'10.0.0.%'    
wordpress@'%'
wordpress@'10.0.0.254'
wordpress@'localhost'
wordpress@'db02'
wordpress@'10.0.0.5%'
wordpress@'10.0.0.0/255.255.254.0'
10.1.3 用户的管理命令

(1) 查

5.7+
mysql> select user,host ,authentication_string from mysql.user;
5.7-
mysql> select user,host ,password  from mysql.user;

(2) 增

create user ncs@'10.0.0.%';

(3) 改

alter user ncs@'10.0.0.%' identified by '123';

(4) 删除

drop user ncs@'10.0.0.%';

10.2 权限管理

10.2.1 权限定义

新特性:
8.0- :命令即权限
ALL :

SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE,DROP
ALL : 以上所有权限,一般是普通管理员拥有的
with grant option:超级管理员才具备的,给别的用户授权的功能

8.0+ : 支持角色功能( 自由打包需要的权限).

10.2.2 权限定义方法

GRANT ALL ON 权限作用范围 TO 用户 IDENTIFIED BY ‘密码’;
ALL——权限**
GRANT SELECT, INSERT, UPDATE, DELETE ON oldguo.* TO oldguo@‘10.0.0.%’ IDENTIFIED BY ‘123’;

权限作用范围:
. = -R /
ncs.* = -R /ncs
ncs.t1 = -R /ncs/t1

10.2.3 权限管理

(1) 授权

GRANT ALL ON ncs.* TO ncs@’% IDENTIFIED BY ‘123’;

例子1:创建并授权超级管理员root,能够通过10网段任意地址管理数据库.

grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;

在这里插入图片描述
(2) 查询用户权限

show grants for root@'10.0.0.%';

例子2:创建一个应用用户app,能够通过10网段访问,(增删改查)app库的所有表

grant SELECT,INSERT, UPDATE, DELETE 	on app.* 	to	app@'10.0.0.%'	identified by '123';

(3) 回收

说明:

多次授权是叠加关系,修改权限只能回收.

grant SELECT,INSERT, UPDATE, DELETE on app.* to app@'10.0.0.%' identified by '123';
show grants for app@'10.0.0.%';

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值