Day-01-MySQL数据库介绍及部署

课程知识内容概述:
01 数据库服务概述介绍
02 数据库服务安装部署
03 数据库服务初始化介绍

04 数据库服务用户管理
05 数据库服务授权管理

06 数据库服务授权表介绍 * 三个授权表
07 数据库服务密码重置实践 **** 关闭数据库
08 数据库服务连接管理
09 数据库服务应用配置

10 数据库服务多实例构建

01 数据库服务概述介绍
1)企业中为什么需要数据库?
数据:图片 文字 视频 用户名 密码 代码信息(html php jar) 地址 人类识别 — 保存
数据:二进制信息 — 保存 — 磁盘
人类可识别信息 – DBMS(数据库管理系统) – 二进制 — 磁盘(颗粒-正负极)
DBMS分类:
RDBMS(关系型数据库软件):主流核心使用数据软件
NoSQL(非关系数据库软件):辅助数据库软件程序
DDBMS(分布式数据库软件):解决海量数据存储与管理 (NewSQL)

2)数据库服务作用:
01 可以实现数据稳定存储(安全性)
02 可以分析管理数据信息(数据分析查询) 注册 — 数据库识别 — 二进制 — 磁盘

3)数据库服务分类:
第一代数据库产品:实现数据整合
01 关系型数据库:二维表结构数据库 == execl
DBMS(管理系统)


字段/记录

代表产品:MySQL Oracle Mariadb SQLserver(国企 校园)PostgreSQL(PGSQL)海量数据存储场景–金融行业

第二代数据库产品:实现数据拆分 解决并发压力
02 非关系型数据库:提高数据存储和读取效率(内存存储数据) 辅助关系型数据库,解决高并发访问问题
key value 键值对 抖音/B站 — 点赞:1000 收藏数量 100
代表产品:redis mongodb(文档型数据库==关系型数据库?)ES(日志信息存储)

第三代数据库产品:实现业务整合
03 新型数据库:业务整合 分布式(垂直分布式 水平分布式)
代表产品:OceanBase TiDB PolarDB

02 数据库服务安装部署
1)数据库版本应用:
面试题目:你之前用的数据库服务是什么 用的是什么版本?

MySQL数据库产品:Oracle MySQL Mariadb MySQL 5.5+ 10的版本 Percona MySQL (工具 辅助管理数据库)
MySQL数据库版本:
大版本
5.5 5.5 (GA最新版本) 5.5.62 18年发布
5.6 5.6 (GA最新版本) 双数版本 5.6.26 38 40
5.7 5.7 (GA最新版本) 5.7.30 5.7.32
PS:以上三个版本,都已停止更新维护
8.0 8.0.32

C版: 社区版 — 免费版
E版: 企业版 — 盈利版
Cluster:集群版 — 收费版
PS:主要讲解8.0.26 mysql

2)数据库服务程序下载
官网下载:https://www.mysql.com/
查看系统C语言库版本
getconf GNU_LIBC_VERSION
ldd –version

3)数据库软件安装方式:
方式一:利用yum进行安装 更新yum源 https://dev.mysql.com/downloads/ 最新版本 网络 最新
方式二:利用rpm进行安装 离线安装 rpm -ivh xxx.rpm 依赖
方式三:源码安装 编译安装 cmake — make && make install 用于数据库二次开发 30~1小时
方式四:二进制安装 解压完了 依赖需要解决 (主推)

二进制安装步骤:
01 系统环境准备:
虚拟主机环境:1核 2G 100G
系统配置说明:
网络地址:10.0.0.51
主机名称:db01
域名解析:10.0.0.51 db01
关闭防火墙:
关闭selinux:
卸载系统mariadb程序:yum remove rpm -qa|grep mariadb
解决软件依赖:yum install -y libaio-devel

02 上传部署软件:
cd /usr/local
rz -y
— 上传数据库程序压缩包

tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
ll mysql-8.0.26-linux-glibc2.12-x86_64 -d
drwxr-xr-x 9 root root 129 Apr 26 12:01 mysql-8.0.26-linux-glibc2.12-x86_64
— 解压软件程序
ln -s mysql-8.0.26-linux-glibc2.12-x86_64 mysql
— 创建软链接

vim /etc/profile
export PATH=”/usr/local/mysql/bin:$PATH”
source /etc/profile
mysql -V
mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server – GPL)
— 编辑环境变量

03 初始化数据库
mkdir -p /data/3306/data
useradd mysql
chown -R mysql. /data/3306/data
ll /data/3306/data -d
drwxr-xr-x 2 mysql mysql 6 Apr 26 12:07 /data/3306/data
— 环境准备

mysqld –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/data/3306/data
核心程序命令 初始化核心参数(不安全初始化) 数据库管理用户 核心程序目录 数据存储目录
— 初始化过程
PS:只要初始化没有报错就没问题

vim /etc/my.cnf
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
— 编写配置文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
ll /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10576 Apr 26 12:22 /etc/init.d/mysqld
/etc/init.d/mysqld start
— 启动运行数据库服务

chkconfig –add mysqld
— 实现数据库启动脚本开机自动运行

[root@db01 local 12:23]# ps -ef|grep mysql
root 8559 1 0 12:23 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe –datadir=/data/3306/data –pid-file=/data/3306/data/db01.pid
mysql 8698 8559 15 12:23 pts/0 00:00:04 /usr/local/mysql/bin/mysqld –basedir=/usr/local/mysql –datadir=/data/3306/data –plugin-dir=/usr/local/mysql/lib/plugin –user=mysql –log-error=db01.err –pid-file=/data/3306/data/db01.pid –socket=/tmp/mysql.sock
root 8753 8161 0 12:23 pts/0 00:00:00 grep –color=auto mysql
[root@db01 local 12:23]# netstat -lntup|grep mysql
tcp6 0 0 :::33060 :::* LISTEN 8698/mysqld
tcp6 0 0 :::3306 :::* LISTEN 8698/mysqld
PS:The X Plugin can be disabled at startup by either setting mysqlx=0 in your MySQL configuration file
数据库初始化过程完毕

systemctl enable mysqld
systemctl start mysqld
— 利用systemctl间接管理mysql服务

03 数据库服务初始化介绍
8.0 5.7 数据库初始化操作:
安全模式初始化:
mysqld –initialize — 可以利用随机密码登录(临时密码 具有4种复杂度 12位)
说明:临时密码只能用户临时登录数据库,登录完毕需要重置密码,才能对数据库进行管理
alter user root@’localhost’ identified by ‘123456’;
— 修改临时密码

非安全模式初始化:
mysqld –initialize-insecure …. — 可以免密登录

5.5 5.6 数据库初始化操作:
./mysql56/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql56 –datadir=/data/3356/data
ps:确认是否会显示两个ok 表示初始化成功

初始化学生问题汇总:
问题一:安全模式初始化完毕 临时密码无法登录
问题现象:
[root@db01 ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)
问题分析:
1)初始化数据库时,需要将数据库服务停止
2)初始化的命令参数,要书写完整
mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/data/3306/data

问题二:遇到systemctl启动数据库服务,无法显示进程和端口信息
问题现象:
systemctl start mysqld –> 没有进程信息
问题分析:
systemctl 识别服务已经启动,无法反复启动
可以关闭数据库服务,再次启动

问题三:数据库服务无法启动
问题现象:
/etc/init.d/mysqld start — 启动报错信息
问题分析:
查看错误日志:
/data/3306/data/db01.err
发现数据目录里面数据信息不完整 — 重新删除 — 重新初始化 — 重新创建出完整的数据目录

知识点补充:非安全模式设置管理员密码
设置密码方法一:没有密码设置密码
在命令行设置:
mysqladmin password ‘oldboy123’
or
mysqladmin -uroot -p password ‘oldboy123’

在数据库中设置密码:SQL语句
alter user root@’localhost’ identified by ‘oldboy123’;

设置密码方法二:修改密码信息
mysqladmin -uroot -poldboy123 password ‘123456’

在数据库中设置密码:SQL语句
alter user root@’localhost’ identified by ‘oldboy123’;
— 8.0 利用SQL语句设置用户密码
update mysql.user set authentication_string=PASSWORD(‘oldboy123′) where user=’root’ and host=’localhost’;
— 5.7 利用SQL语句设置用户密码
set password for ‘oldboy’@’localhost’=PASSWORD(‘oldboy123’);
— 5.6 利用SQL语句设置用户密码

设置密码方法三:忘记密码进行密码重置
???

04 数据库服务用户管理
学习数据库用户管理知识原因

  • 用户登录数据库服务系统中(实现数据库服务登录)
  • 用户管理数据库服务中对象(实现数据库对象管理) 1)创建用户 useradd = create
    创建用户格式:’用户名称信息’@’白名单信息’
    用户名称: 创建用户名字
    白名单信息:主机域信息
    本地-localhost/127.0.0.1
    — 只允许本地连接登录数据库
    网段-10.0.0.0/24 10.% 172.16.% 192.168.10.%
    — 允许某个网段中的多个主机,均可远程登录
    地址-192.168.10.13
    — 允许某个主机可以远程登录
    域名-oldboyedu
    — 允许某个主机可以远程登录(域名解析)
    — 允许远程登录数据库 create user oldbaby@’10.0.0.%’ identified by ‘123’; 方式一:书写方法(企业常用) root@’192.168.30.0/24′
    root@’192.168.30.0/255.255.255.0′
    — 授权一个网段主机均可远程登录数据库服务,表示这个网段中192.168.30.1~192.168.30.254均可访问
    — 在数据库中识别默认掩码就是/24,其他掩码信息需要具体写明,需要注意特殊VLSM子网掩码需要长格式指明,不能简写*** 方式二:书写方法(企业常用) root@’192.168.30.%’
    — 授权一个网段主机均可远程登录数据库服务,表示这个网段中192.168.30.1~192.168.30.254均可访问 方式三:书写方法 root@’172.16.%’
    — 授权一个更大网段主机均可远程登录数据库服务,表示这个网段中192.168.0.1~192.168.255.254均可访问 方式四:书写方法 root@’%’
    — 授权任意主机都可以远程登录数据库服务 方式五:书写方法 root@’192.168.30.51′
    — 授权一个具体的主机可以远程登录数据库服务,表示这个主机192.168.30.51可以访问
    root@’192.168.30.5%’
    — 授权多个具体的主机可以远程登录数据库服务,表示多个主机192.168.30.50~192.168.30.59均可以访问 解决数据库加密问题:客户端 — 服务端
    方法一:升级客户端 客户端加密方式升级
    方法二:降级服务端 服务端加密方式降级
    查看8.0数据库 密码加密方式
    show variables like ‘%auth%’;
    早起默认加密方式:mysql_native_password
    目前最新加密方式:caching_sha2_password 降级方式一:
    create user oldgirl@’10.0.0.%’ identified with mysql_native_password by ‘123’;
    降级方式二:
    alter user oldboy@’10.0.0.%’ identified with mysql_native_password by ‘123’;
    降级方式三:全局修改 vim /etc/my.cnf [mysqld]
    default_authentication_plugin=mysql_native_password
    重启数据库服务,使配置生效
    检查确认
    mysql> show variables like ‘%auth%’;
    +——————————-+———————–+
    | Variable_name | Value |
    +——————————-+———————–+
    | default_authentication_plugin | mysql_native_password |
    +——————————-+———————–+
    查看数据库用户密码信息:
    select user,host,authentication_string,plugin from mysql.user; 2)查看用户 id = select
    查看数据库所有用户信息
    select user,host from mysql.user;
    查看当前登录数据库用户信息:
    select user(); 3)删除用户 userdel = drop
    方式一:drop
    drop user oldbaby@’10.0.0.%’;
    方式二:delete 危险–有可能将全部用户删除
    delete from mysql.user where user=’oldboy’ and host=’10.0.0.%’; 企业里:尽量不要删除用户,锁定用户=禁用
    alter user oldgirl@’10.0.0.%’ account lock; 锁定
    alter user oldgirl@’10.0.0.%’ account unlock; 解锁 4)修改用户 usermod = alter
    修改用户密码
    alter user oldboy@’10.0.0.%’ identified with mysql_native_password by ‘123’; 补充:8.0版本与之前数据库版本 用户管理区别:
    区别一:数据库密码加密方式不同
    8.0 caching_sha2_password
    之前版本 mysql_native_password 区别二:新版数据库不能在授权时创建用户
    之前数据库版本:
    grant all on . to oldgirl@’localhost’ identified by ‘123’;
    — 一条命令,完成了创建用户,并授权操作
    show grants for oldgirl@’localhost’;
    select * from mysql.user\G 目前数据库版本:
    create user oldboy@’localhost’ identified by ‘123’;
    grant all on . to oldboy@’localhost’;

05 数据库服务授权管理
授权管理作用:安全 区别用户能力

数据库中有什么权限:
show privileges; — 查看所有权限信息
第一列:Privilege — 所有权限信息
第二列:Context — 权限操作对象
第三列:Comment — 权限解释说明
常用权限信息:参考截图
PS:赋予用户所有权限,all=all privileges表示所有权限,但一个权限不会赋予Grant_priv
To give to other users those privileges you possess 不允许给其他用户授权
皇帝 — 年羹尧(荣耀)– 授权能力 玉玺
当创建出一个用户时,如果没有授权,也会有一个默认权限
mysql> create user oldbaby@’10.0.0.%’ identified by ‘123’;
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for oldbaby@’10.0.0.%’ ;
+——————————————–+
| Grants for oldbaby@10.0.0.% |
+——————————————–+
| GRANT USAGE ON . TO oldbaby@10.0.0.% |
+——————————————–+
1 row in set (0.00 sec)
USAGE:No privileges – allow connect only — 创建用户之后,默认权限只允许用户登录数据库

如何设置权限:授权
MySQL> grant all on 授权对象范围 to 权限赋予用户信息
MySQL> grant all on * . * to blog@’192.168.30.%’;
授权 权限 库信息 表信息 用户 主机域

一般程序中,需要授权程序连接用户有:select insert update delete 博文–uri–数据库 blog.oldboy.com/xxx&id=02

如何回收权限:取消权限
MySQL> revoke delete on . from oldbaby@’192.168.30.%’;
回收权限 权限 拿走

mysql> show grants for oldbaby@’10.0.0.%’ ;
+———————————————————————+
| Grants for oldbaby@10.0.0.% |
+———————————————————————+
| GRANT SELECT, INSERT, UPDATE, DELETE ON . TO oldbaby@10.0.0.% |
+———————————————————————+
1 row in set (0.00 sec)

mysql> revoke delete on . from oldbaby@’10.0.0.%’;
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for oldbaby@’10.0.0.%’ ;
+————————————————————-+
| Grants for oldbaby@10.0.0.% |
+————————————————————-+
| GRANT SELECT, INSERT, UPDATE ON . TO oldbaby@10.0.0.% |
+————————————————————-+
1 row in set (0.00 sec)

06 数据库服务授权表介绍
授权表有什么用:可以核实用户身份(做验证) 可以核实用户权限 随便登录
user : 主要用于存储用户、主机域、密码、加密插件等信息,同时还存储了. 级别的权限(全局权限)
db: 主要用于存储用户、主机域等信息,同时还存储了单库级别的权限(局部权限)
tables_priv : 主要用于存储用户、主机域等信息,同时还存储了单表级别的权限(局部权限)

知识点补充:8.0版本新的权限管理功能 权限角色管理 == 将相同权限的用户整合为一个组 == 系统用户组
之前的版本,在设置权限信息时,是能针对用户设置权限
www数据库 oldboy-增删改查.其他管理权限 oldgirl-增删改查.其他管理权限 oldbaby-增删改查.其他管理权限

创建角色信息:
CREATE ROLE ‘admin’, ‘developer’;
CREATE ROLE ‘webapp’@’localhost’;

设置角色功能实践:
00 创建管理数据库信息
create database oldboy;

01 创建出角色组信息
create role oldboy_rw,oldboy_r;

02 设置角色的权限
grant select on oldboy.* to oldboy_r;
grant select,update,insert,delete on oldboy.* to oldboy_rw;

03 创建用户信息
create user user01@’%’ identified by ‘123’;
create user user02@’%’ identified by ‘123’;

04 实现用户与角色关联
grant oldboy_r to user01@’%’;
grant oldboy_rw to user02@’%’;

05 激活角色功能
方式一:手动激活角色
set default role all to user01@’%’;
set default role all to user02@’%’;
— 用管理员登录数据库,激活角色功能

select current_role()
— 相应用户登录数据库,查看确认角色功能是否激活(有角色信息)

方式二:自动激活角色
set global activate_all_roles_on_login=on;
— 临时配置,也可以将配置参数写入到配置文件中实现永久配置

07 数据库服务密码重置实践
忘记密码如何登录数据库:(root用户密码忘记)
1)关闭数据库服务
systemctl stop mysqld
2)采用跳过授权表登录数据库
mysqld_safe –skip-grant-tables –skip-networking &
— skip-grant-tables 表示忽略授权表启动
— skip-networking 忽略网络通讯方式启动
3)进入数据库修改重置密码
flush privileges; 可以实现将内存信息同步到磁盘 实现磁盘数据加载到内存
— 将授权表加载到内存中
alter user root@’localhost’ identified by ‘123’;
4)退出数据库并关闭服务
mysql> shutdown;
systemctl start mysql
5)测试密码信息
mysql -uroot -p123

08 数据库服务连接管理 延后
09 数据库服务应用配置 延后
10 数据库服务多实例构建 延后

作业:
01 如何编写mysql的systemctl启动文件;
02 安装好 5.6 5.7 数据库 — 数据库升级

yuanjihua
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇