MySQL体系结构和管理学习笔记day02

1.MySQL C/S模型

Server : mysqld
Client :
socket : 仅本地连接使用
tcp/ip : 应用连接使用
TCP/IP方式(远程、本地):
mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket方式(仅本地):
mysql -uroot -poldboy123 -S /tmp/mysql.sock

2. 实例 **

实例= mysqld ----> master thread ----> 干活的线程 + 预分配的内存结构
公司= boss 经理 员工 办公室

3.mysql的程序结构

3.1 MySQL的专用管理和操作命令SQL

DDL 数据定义语言
DCL 数据控制语言
DML 数据操作语言
DQL 数据查询语言

3.2 SQL语句的执行过程

select user, host form mysql.user;
(1)mysql -u root -pxxxx

3.2.1 连接层

(1) 提供链接协议
socket
TCP/IP
(2) 验证 user password host port
(3) 提供连接线程
show [full] processlist;
功能: 接收SQL语句,返回结果.]

3.2.2 SQL层 *****

(1) 语法检查和SQL_MODE检查
(2) 语义检查和权限检查
(3) 解析预处理,生成解析树(执行计划树)
(4) 优化会根据自带算法,选择最优的方案(代价模型算法)
代价? cpu io mem
(5) 选择最优的方案进行执行SQL
(6) 提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能
(7) 提供日志记录(日志管理章节):binlog,默认是没开启的。

3.2.3 存储引擎层(简单介绍)

相当于文件系统,将数据取出,再交给SQL层结构化成表,返回给用户.

4. MySQL的逻辑结构 ***

4.1 库:

库名
库属性

4.2 表

表名
属性
列:列名(字段),列属性(数据类型,约束等)
数据行(记录)

5. MySQL的物理存储结构引入

5.1 库的物理存储结构

用文件系统的目录来存储

5.2 表的物理存储结构 ***

MyISAM(一种引擎)的表:
user.frm
user.MYD
user.MYI
InnoDB(默认的存储引擎)的表:
time_zone.frm:存储列相关信息
time_zone.ibd:数据行+索引

5.3 InnoDB表底层存储结构引入(扩展)*****

段 : 一个表就是一个的段(非分区表)
区 : 固定大小1M, 连续的64个页
页 : 最小的IO单元,默认16K

6. MySQL基础管理

6.1 用户的管理

6.1.1 用户的作用

6.1.2 用户的定义

6.1.3 用户管理操作

create user oldguo@'10.0.0.%';
drop user oldguo@'10.0.0.%';
alter user oldguo@'10.0.0.%' identified by '123';
select user,host from mysql.user;
create user oldboy@'10.0.0.%' identified by '123';
注:
(1)8.0以前,以上命令可以忽略,grant可以自动创建用户并授权.
(2)8.0以后必须先建用户后授权,grant只做授权功能.

6.2 权限管理

6.2.1 作用

6.2.2 权限定义

6.2.3 授权范围

6.2.4 授权管理命令

grant all on . to oldguo@'10.0.0.%' identified by '123';

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
注:
ALL : 普通管理员
ALL+ with grant option 超级管理员 .

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

6.2.5 授权管理生产需求

(1) 授权一个管理员用户admin ,密码admin,能够通过10网段管理数据库
oldguo[(none)]>grant all on . to admin@'10.0.0.%' identified by 'admin';
(2) 开放一个wordpress应用的用户,密码123,nginx服务器使172.16.1.%网段.
应用用户需要权限?
select,insert,update,delete
grant select,insert,update,delete on wordpress.* to wordpress@'172.16.1.%' identified by '123';
(3) 中小公司,开发人员leader,需要开发用户dev通过10网段对wordpress进行开发和管理
grant SELECT,INSERT, UPDATE, DELETE,CREATE,ALTER,CREATE VIEW,SHOW VIEW,CREATE ROUTINE, ALTER ROUTINE,EVENT, TRIGGER on wordpress.* to dev@'10.0.0.%' identified by '123';

6.2.6 权限回收

oldguo[(none)]>show grants for dev@'10.0.0.%';
oldguo[(none)]>revoke delete on wordpress.* from dev@'10.0.0.%';

6.2.7 面试问题

作为开发人员开用户需要怎么沟通?
以邮件形式,进行开用户的申请
向谁申请?
DBA权限管理人员
分管部门领导
DBA主管
提供哪些信息?
需要哪些权限
操作对象
从哪来访问MySQL

最为DBA,开发人员找你开用户需要怎么沟通?
提供哪些信息?
需要哪些权限
操作对象
从哪来访问MySQL

开发人员找你私下要root用户权限?
不给!
金融类:
非本业务部分,不得提供超级管理员用户的权限

6.2.8 本地管理员用户密码忘记

(1) 关闭数据库

(2) 将数据库启动到无验证模式

[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &

(3) 修改密码

oldguo[(none)]>flush privileges;
oldguo[(none)]>alter user root@'localhost' identified by '123456';

(4)重启数据库为正常模式

[root@db01 ~]# /etc/init.d/mysqld restart

(5)测试新密码

[root@db01 ~]# mysql -uroot -p123456

6.3 MySQL连接管理

6.3.1 MySQL自带命令

mysql
-u
-p
-h
-P
-S
-e
-V
<
--help
socket :
mysql -uroot -p123 -S /tmp/mysql.sock
mysql -uoldguo -p -S /tmp/mysql.sock
注意:本地登录的用户,需要提前授权localhost相关用户
TCP/IP :
mysql -uoldguo -p -h10.0.0.51 -P3306

[root@db01 ~]# mysql -uroot -p123456 -e "show databases;"
[root@db01 ~]# mysql -uroot -p123456 <world.sql

6.3.2 客户端工具连接

oldguo[(none)]>grant all on . to root@'10.0.0.%' identified by '123';
sqlyog
navicat

6.4 MySQL的启动和关闭方式

6.5 MySQL的初始化配置

6.5.1 提供的方法

1. 预编译 **

2. 初始化配置文件*****

3. 命令行 ***

注意: 优先级 3>2>1

6.5.2 初始化配置文件的默认读取顺序

[root@db01 /tmp]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf ----> /tmp/mysql.sock
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf ----> /tmp/a.sock

注意:一旦使用--defaults-file,以上的默认配置就不会生效了
[root@db01 ~]# mysqld_safe --defaults-file=/opt/oldguo.cnf &

6.5.3 初始化配置文件作用

数据库的启动
客户端的登录

6.5.4 初始化配置文件格式

[标签1]
xxxx=yyyy
[标签2]
xxxx=yyyy
[标签3]
xxxx=yyyy

标签 :
服务端
[mysqld]
[mysqld_safe]
[server]
客户端
[mysql]
[mysqldump]
[mysqladmin]
[client]

6.5.5 配置文件模板

[mysqld]
user=mysql
server_id=6
port=3306
basedir=/application/mysql
datadir=/data/3306/data
log_error=/data/3306/data/3306.log
socket=/data/3306/mysql.sock
[mysql]
socket=/data/3306/mysql.sock

6.6 MySQL的多实例管理

6.6.1 准备多个目录

mkdir -p /data/330{7,8,9}/data

6.6.2 准备配置文件

cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF

cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/application/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF

6.6.3 初始化三套数据

mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/application/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/application/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/application/mysql

6.6.4 systemd管理多实例

cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service

vim mysqld3307.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
vim mysqld3308.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
vim mysqld3309.service
ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

6.6.5 授权

chown -R mysql.mysql /data/*

6.6.6 启动

systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

6.6.7 验证多实例

netstat -lnp|grep 330
mysql -S /data/3307/mysql.sock -e "select @@server_id"
mysql -S /data/3308/mysql.sock -e "select @@server_id"
mysql -S /data/3309/mysql.sock -e "select @@server_id"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值