主要概述
数据库服务概述介绍
数据库服务安装部署
数据库服务初始化介绍
数据库服务用户管理
数据库服务授权管理
数据库服务授权表介绍
数据库服务密码重置
数据库服务连接管理
数据库服务应用配置
数据库服务多实例构建
1. 数据库服务概述介绍
1.1 企业中为什么需要数据库
数据:图片 文字 视频 用户名 密码......... 地址 人类识别 --- 保存
数据:二进制信息 ------保存-----磁盘中
1.2 数据库服务作用
可以实现数据的稳定存储
可以分析管理数据的信息
1.3 数据库服务分类
关系型数据库:二维表数据库==excel
代表产品:Mysql Oracle Mariadb SQLserver PostgreSQL(越来越火了)
非关系型数据库:提高数据存储和读取的效率 辅助关系型数据库,解决高并发访问问题
key value 键值对
代表产品:redis mongodb memache ES(日志存储)
新型数据库 分布式
数据参考:
数据参考:
2. 数据库安装部署
2.1 数据库版本应用
数据库版本应用
C版: 社区版==免费版
E版: 企业版==收费版
Cluster 集群版==收费版
作者比较熟悉8.0.26数据库版本,所以后续该版本为例讲解
2.2 数据库软件的安装方式
利用yum源安装 ---只下载最新版
更新yum源:MySQL :: MySQL Community Downloads
利用rpm安装
离线安装 ---依赖问题
源码安装
编译安装 -----时间问题
二进制安装
解压即用
依赖需要解决
二进制安装步骤:
系统环境准备:
虚拟主机环境:2核 4G 100G
系统配置说明:
网络地址:10.0.0.51
主机名称:db01
安装依赖包:
针对centos8的操作系统:
yum install -y libaio-devel
yum install -y ncurses-compat-libs
针对Ubuntu操作系统:
apt-get install libncurses5
apt-get install libaio1
上传压缩包
## 解压
tar xf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/
## 软连接
ln -s /usr/local/mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql
## 环境变量
vim /etc/profile
export PATH="/usr/local/mysql/bin:$PATH"
source /etc/profile
## 验证
mysql -V
## 出现版本信息表示配置成功
初始化数据库
## 创建数据目录
mkdir -p /data/3306/data
## 创建用户
useradd mysql
## 授权
chown -R mysql. /data/3306/data/
## 初始化
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data
## 编写配置文件
vim /etc/my.cnf
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
##编写systemd自启动文件
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=5000
Restart=on-failure
[Install]
WantedBy=multi-user.target
## 重新加载
systemctl daemon-reload
## 开机自启
systemctl enable mysqld.service
## 启动数据库
systemctl start mysqld.service
3. 数据库初始化介绍
8.0 5.7 数据库初始化操作:
安全模式话初始化
mysqld --initialize ................ ----可以利用随机密码登录
说明:临时密码只能用于临时登录密码,使用数据库的话还是需要重置密码的。
非安全模式初始化
mysqld --initialize-insecure............... -----可以免密码登录
非安全模式下设置密码
方法一:在命令行中设置
mysqladmin password '123456'
mysql -uroot -p password '123456'
## 修改密码
mysqladmin -uroot -p123456 password '123'
方法二:在数据库中设置
## 设置密码和修改密码一样
alter user root@'localhost' identified by '123456'
4. 数据库服务的用户管理
创建用户
创建用户的格式:'用户名称信息'@'白名单信息'
用户名称信息:创建用户的名称
白名单信息:主机域信息
本地——localhost/127.0.0.1
只允许本地登录
网段——10.0.0.0/24
-- 允许某个网段都可以登录
地址——192.168.0.5
-- 只允许某个主机登录
域名——xingzhibang.com
域名:xingzhibang.com
-- 只允许某个主机登录
允许远程登陆
解决数据库加密问题:客户端-----服务端
方法一:升级客户端 客户端加密方式升级
方法二:降级服务端 服务端加密方式降级
查看8.0 数据库加密方式
show variables like '%auth%';
早期默认的加密方式:mysql_native_password
目前最新的加密方式:caching_sha2_password
降级方式一:创建用户时指定加密方式
create user xingzhibang@'%' identified with mysql_native_password by '123';
降级方式二:修改加密方式
alter user xingzhibang@'%' identified with mysql_native_password by '123';
降级方式三:修改配置文件
vim /etc/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
## 重启数据库
删除用户
## 方式一:drop
drop user xingzhibang@'10.0.0.%';
## 方式二:delete
delete from mysql.user where user='xingzhibang' and host='10.0.0.%';
在企业中:尽量不要删除,锁定用户=禁用
## 锁定xinghzibang这个用户
alter user xingzhibang@'localhost' account lock;
## 解锁xingzhibang这个用户
alter user xingzhibang@'localhost' account unlock;
修改用户
修改用户的密码:
alter user xingzhibang@'localhost' identified with mysql_native_password by '123';
## 其中mysql_native_password为密码的插件,看情况添加
补充:8.0版本和之前数据库版本的区别 用户管理区别
区别一:
数据库密码的加密方式不同:
8.0及以后----------------caching_sha2_password
之前版本-----------------mysql_native_password
区别二:新版数据库不能在授权时创建用户
之前版本:
grant all on *.* to xingzhibang@'localhost' identified '123';
##一条命完成授权和创建用户的动作
5. 数据库服务的授权管理
数据库有什么权限:
show Privileges; -------查看权限
第一列:Privileges -----所有权限
第二列:Context ------权限操作对象
第三列:Comment ------权限解释说明
说明:赋予用户所有权限,all=all privileges 表示所有权限,但是Grant_priv 的权限不会赋予。
当创建一个用户时,如果没有授权,也会有一个默认权限只允许用户登录数据库
如何授权?
grant all on 库信息.表信息 to 权限赋予用户信息
grant all on *.* to xingzhibang@'localhost';
如何回收权限?
revoke delete on *.* from xingzhibang@'localhost';
## 回收删除权限
如何查看用户的权限?
show grants for root@'localhost';
## 查看root的权限
6. 数据库授权表介绍
授权表的作用:可以用户的身份和权限。
查看授权表:
use mysql;
show tables;
user:主要存储用户、主机域、密码、加密插等信息,同时还存储了*.*级别的权限(全局权限)。
db:主要用于存储用户、主机域、等信息,同时还存储了单库级别的权限(局部权限)。
tables_priv:主要用于存储用户、主机域信息,同时还存储了单表级别的权限(局部权限)。
补充:8.0版本新的权限管理功能 权限角色功能
之前的版本:在设置权限信息时,只能针对用户设置权限
设置角色功能实践:
创建管理数据库信息
## 创建名为xingzhibang的数据库
create database xingzhibang;
创建角色组信息
## 创建两个角色组信息分别是读写和只读权限
create role work_rw,work_r;
设置角色的权限
grant select,update,insert,delete on xingzhibang.* to work_rw;
grant select on xingzhibang.* to work_r;
创建用户信息
## 管理员用户
create user admin@'%' identified by '123';
## 游客用户
create user guest@'%' identified by '123';
实现用户和角色关联
grant work_rw to admin@'%';
grant work_r to guest@'%';
激活角色功能(不激活无效)
set global activate_all_roles_on_login=on;
## 这里表示临时激活,也可以把activate_all_roles_on_login=on 参数放到my.cnf的配置文件里面
7. 数据库服务密码重置
这里的密码重置是数据库root的密码重置,如果是用户密码忘记了直接用root登录一下改一下就行了呀。
关闭数据库服务
systemctl status mysqld
ps -ef |gre
跳过授权表登录数据库
mysqld_safe --skip-grant-tables --skip-networking &
## --skip-grant-tables 跳过授权表
## --skip-networking 跳过网络
进入数据库重置密码
## 直接进入数据库,无需密码
mysql
## 加载授权表到内存中
flush privileges;
## 修改密码
alter user root@'localhost' identified by '123';
退出数据库并关闭服务
## 在数据库中关闭数据库,类似于init 0
shutdwon;
## 重新启动数据库
systemctl start mysqld
测试密码信息
## 测试登录
mysql -uroot -p123
8. 数据库服务的连接管理
连接管理方式
本地连接:unix 套接字 配置文件中:socket=/tmp/mysql.sock
ps:利用套接字文件,可以实现在一个系统中,不同的程序可以建立连接
远程连接:socket(网络开发)---------> TCP/IP------->IP地址 端口信息
连接管理方法
利用数据库自带的客户端命令实现连接
本地连接:mysql -uroot -p123 -S /tmp/mysql.socket
远程连接:mysql -uroot -p123 -h10.0.0.51 -P3306
利用第三方数据库管理工具实现连接
远程连接:可以使用的远程工具(sqlyog navicat workbench dbserver)
9. 数据库服务的应用配置
服务进行配置有什么作用?
实现服务运行启动
实现某些功能作用
应用配置的三种方式
利用编译安装过程实现配置
编写配置文件信息
默认的配置文件:/etc/my.cnf、
配置文件的内容:
[mysql]
socket=/tmp/mysql.sock
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/3306/data
socket=/tmp/mysql.sock
## 有[]的部分表示对客户端和服务端配置区域
## 没有[]部分表示具体的配置参数 mysql --help 查看
有[]的部分表示对客户端和服务端配置区域
客户端:[mysql] [mysqldump] -- [client]
服务端:[mysqld] [mysqld_safe]
没有[]的部分表示具体的配置参数 mysql --help查看
利用启动命令参数实现配置功能
mysqld_safe --skip-grant-tables --skip-networking &
启动数据库服务程序有两个进程:
mysqld_safe:父进程,接受任务信息
mysqd:子进程,处理任务信息 //. 数据库服务多实例构建
10. 数据库服务多实例构建
多实例:多个服务同时启动 跑不同的业务 互相独立
多实例作用:充分利用硬件资源
构建多实例实践:
多实例部署环境规划
多实例部署环境
mkdir -p /data/330{7..9}/data
chown -R mysql:mysql /data/
进行不同实力的初始化
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data
## 把默认的配置文件移走,避免加载之前的配置文件
mv /etc/my.cnf /etc/my.cnf.bak
编写配置文件
## 3307 配置文件
vim /data/3307/data/my.cnf
[mysql]
socket=/tmp/mysql3307.sock
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/tmp/mysql3307.sock
## 3308 配置文件
vim /data/33088/data/my.cnf
[mysql]
socket=/tmp/mysql3308.sock
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/tmp/mysql3308.sock
## 3309 配置文件
vim /data/3309/data/my.cnf
[mysql]
socket=/tmp/mysql3309.sock
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/tmp/mysql3309.sock
多实例服务运行启动
mysqld_safe --defaults-file=/data/3307/data/my.cnf &
mysqld_safe --defaults-file=/data/3308/data/my.cnf &
mysqld_safe --defaults-file=/data/3309/data/my.cnf &
## 检查端口或者进程是否启动成功
进入多实例构建的数据库中
## 以3307为例,一定要-S指定套接字文件
mysql -S /tmp/mysql3307.sock
## 在3307中查看端口
select @@port;
评论