Linux 之 MySQL

前言

什么叫DBA?
       DBA:Database Administrator,数据库管理员,是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师分支。
       任务职责:主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
       核心目标:保证数据库管理系统的稳定性、安全性、完整性和高性能。

什么是数据库?
       数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
       每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。


1、数据库产品简介

1.1 数据库类型介绍

RDBMS
       关系数据库管理系统(Relational Database Management System)是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。
       主流产品:Oracle ,MySQL ,PG,MSSQL

NoSQL
       最常见解释:non-relational, “Not Only SQL”也被很多人接受。NoSQL是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性,其拥护者们提倡运用非关系型的数据存储。
       NoSQL有如下优点:易扩展,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系(易于扩展原因)。
       主流产品:MongoDB ,Redis ,ES
NewSQL
       NewSQL是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
       特点:无共享存储、多节点的并发控制、基于多副本做高可用和容灾、流量控制、分布式查询处理。
       主流产品:TiDB,Spanner ,AliSQL ,OB ,PolarDB

1.2 数据库使用趋势与发展趋势

数据库使用趋势——》》》DB-ENGINES
在这里插入图片描述

数据库发展趋势:RDBMS —> NOSQL+RDBMS —> NoSQL(RDBMS),RDBMS(NoSQL)----> NewSQL (spanner TiDB PDB)

1.3 MySQL 企业主要版本选择

MySQL下载地址:MySQL Product Archives。建议先下载到本地再上传解压安装,因为下载有点慢。
版本号+发行时间,较稳定版本:
5.6 版本
       5.6.34(2016.9.30)、5.6.36 (2017.3.18)、5.6.38(2017.9.13)、 5.6.40 (2018.2.26)
5.7 版本
       5.7.18(2018.3.18)、5.7.20(2017.9.13)、5.7.24(2018.10.4) ,学习选择:5.7.26(2019.4.13)
8.0 版本
       8.0.14(2019.12.20)、8.0.15(2019.1.26)、8.0.16(2019.4.13)


2、MySQL简介与安装

       关系型数据库管理系统,瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。
       最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS应用软件之一。
       属于关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

2.1 MySQL 安装

二进制编译安装
1、下载
以下操作都是与5.7.26版本相关的,操作环境:CentOS 7.8
官网下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar(建议先下载到本地再上传Linux安装,因为有点慢)
2、上传
上传命令:rz(先安装:yum install lrzsz -y)

[root@db01 /server/tools]# ls
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

3、解压软件

[root@db01 /server/tools]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64_2.tar  
[root@CCTV /server/tools]#ls
mysql-5.7.26-linux-glibc2.12-x86_64_2.tar   #刚才上传的
mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz  #我们想要的
mysql-test-5.7.26-linux-glibc2.12-x86_64.tar.gz  #测试,不用理会,可以删除

[root@CCTV /server/tools]#tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz  #再次解压
[root@CCTV /server/tools]#ls
mysql-5.7.26-linux-glibc2.12-x86_64

[root@db01 ~]# mkdir /application
[root@db01 /server/tools]# mv mysql-5.7.26-linux-glibc2.12-x86_64  /application/mysql

这里也可以软连接:ln -s mysql-5.7.26-linux-glibc2.12-x86_64/  /application/mysql
或者直接解压指定目录:tar xf mysql-5.7.26-linux-glibc2.12-x86_64_2.tar.gz -C /application

4、用户的创建处理原始环境

先:rpm -qa |grep mariadb        #查看是否存在软件包,安装了就有
[root@db01 ~]# yum remove mariadb-libs-5.5.60-1.el7_5.x86_64 -y  #不卸载会存在一些配置文件,如/etc/my.cnf
[root@db01 ~]# rpm -qa |grep mariadb              #再次检查软件包是否还在
[root@db01 ~]# useradd -s /sbin/nologin mysql -M  #M不创建家目录

5、 设置环境变量

echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
source /etc/profile   #使环境变量生效
mysql -V              #V查看版本,不显示说明解压或者PATH不正确

6、添加数据盘并挂载(使数据盘独立)(可以跳过此步)

  1. 添加一块新磁盘模拟数据盘(5G硬盘,压力测试需要空间大)
  2. 格式化并挂载磁盘
[root@db01 ~]# mkfs.xfs /dev/sdb  #格式化磁盘
[root@db01 ~]# mkdir /data  #存放数据
[root@db01 ~]# blkid        #查看UUID

#实现开机自动挂载
UUID="b21ec3e0-e251-4ded-bc12-2d940f938dd5" /data xfs defaults 0 0  #写入/etc/fstab,双引号可以加上
mount -a  #Mount all filesystems   
df -h     #检查是否挂载成功

7、创建数据目录并授权

[root@db01 ~]# mkdir /data/mysql/data -p  
[root@db01 ~]# chown -R mysql.mysql /data            #给数据授权
[root@db01 ~]# chown -R mysql.mysql /application/*   #授权软件归属

8、 初始化数据(创建系统数据)
维持mysql正常运行的数据

# 5.6 版本 初始化命令  /application/mysql/scripts/mysql_install_db 
# 5.7 版本
方法一:初始化带密码
[root@db01 ~]# mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data 
此处没有error即为成功,初始化成功后面带有数据库初始密码,需要保存一下

--initialize 参数:
1. 对于密码复杂度进行定制:12位,42. 密码过期时间:180
3. 给root@localhost用户设置临时密码

方法二:初始化不带密码,常规操作
#--initialize-insecure #初始化不带密码,无限制
mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

9、配置文件的准备

cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF

10、启动数据库方式
方式1:sys-v

[root@db01 /]#/application/mysql/support-files/mysql.server start|stop
或者:
[root@db01 /etc/init.d]# cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld 
[root@db01 /etc/init.d]# service mysqld restart|start|stop  #操作选项

方式2:systemd

注意: sysv方式启动过的话,需要先提前关闭,才能以下方式登录(/etc/init.d/mysqld stop)
cat >/etc/systemd/system/mysqld.service <<EOF
[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=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

#更新启动文件
systemctl daemon-reload

[root@db01 /]#systemctl restart|start|stop  mysqld   #操作选项

2.2 MySQL数据库无法启动分析

# without updating PID 类似错误 
查看错误日志:/data/mysql/data/主机名.err 
	[ERROR] 上下文
可能情况:
	1/etc/my.cnf 路径不对等
	2/tmp/mysql.sock文件修改过 或 删除过----------重新初始化,再启动
	3、数据目录权限不是mysql------------------------chown重新授权
	4、参数改错了

2.3.管理员密码的设定(root@localhost)

[root@db01 ~]# mysqladmin -uroot -p password 旧密码
Enter password: 
修改密码
mysqladmin -uroot -p旧密码 password 新密码

2.4 管理员用户密码忘记如何操作?

1、先关闭数据库

[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS! 
ps -ef|grep mysql确认一下

2、 启动数据库到维护模式

[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
[1] 13192
[root@db01 ~]#2020-11-06T13:07:39.855593Z mysqld_safe Logging to '/data/mysql/data/db01.err'.
2020-11-06T13:07:39.895458Z mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
回车

#到这里就不需要密码登录了

3、登录并修改密码

mysql登录
mysql> alter user root@'localhost' identified by '1';   #修改数据库密码为1
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;  #刷新权限,因为以上密码太过简单,显示error,刷新一下权限就可以了
mysql> alter user root@'localhost' identified by '1';
Query OK, 0 rows affected (0.01 sec)

4、关闭数据库,正常启动验证

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tony带水!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值