暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第二章 体系结构及基础管理

蜜蜂点滴 2020-05-27
213

一、C/S(客户端/服务端)模型


二、登录方式

TCP/IP方式(远程、本地):

mysql -uroot -p123 -h 192.168.198.132 -P3306

Socket套接字方式(仅本地):

mysql -uroot -p123 -S /tmp/mysql.sock

三、实例介绍

实例=mysqld后台守护进程+Master Thread +干活的Thread+预分配的内存

公司=老板+经理+员工+办公室

四、mysqld程序结构

https://www.jianshu.com/p/7a4101c2106d

连接层:

    1、提供连接协议:--skip-networking

        Socket

        TCPIP

    2、验证用户名(root@localhost)密码合法性,进行匹配专门的授权表:--skip-grant-tables

    3、派生一个专用连接线程(接收SQL语句,返回结果)

思考:mysqld_safe --skip-grant-tables --skip-networking

SQL层(优化方面至关重要):

    1、验证SQL语法和SQL_MODE

    2、验证语义

    3、验证权限

    4、解析器进行语句解析,生产执行计划(解析树)

    5、优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划。代价:时间,资源CPU IO MEM     

    6、执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法。

    7、提供query cache(默认不开),一般不开,会用redis

    8、记录操作日志(binlog)

存储引擎层:

真正和磁盘打交道的一个层次

根据SQL层提供的取数据的方法,拿到数据,返回给SQL,结构化成表,再又连接层线程返回给用户。


逻辑结构:

库--表--数据行(记录),字段(列),属性(列属性,类约束,列的数据类型等,表属性)

表==数据行+字段+元数据

物理结构:

宏观:

库以目录的形式存放在磁盘上。

在操作系统 /data里创建一个目录:mkdir test,则在数据库中可以查看到新增加了一个库test。

表:

引擎:MyISAM (三个文件构成)

user.frm  --列的定义信息

user.MYD  --数据行

user.MYI  --索引信息

引擎:InnoDB(两个文件构成)

time_zone.frm --列的定义信息

time_zone.ibd  --数据行和索引

MyISAM与InnoDB不同:

微观:段 区 页

一个表就是一个段,mysql分配空间至少分配一个区(每个区默认大小64页)mysql最小的IO单元是页。

五、基础管理

1、用户管理

用户作用:登录,管理数据库对象(逻辑结构)。

用户定义:

①登录数据库:mysql -uroot -p

②增加用户:mysql>create user CMSQL@'192.168.40.%' identified by '123456';

③查看用户:mysql>select user,host,authentication_string from mysql.user;

用户的定义:

用户名@'白名单'

白名单:

'10.0.0.51'

'10.0.0.%'

'10.0.0.5%'

'10.0.0.0/255.255.255.0'

'%'

修改密码:mysql>alter user root@'localhost' identified by '123';

⑤删除用户:mysql>drop user newuser@'172.1.16.%';

2、权限管理

权限作用:控制用户登录之后能对MySQL对象做哪些命令。

权限的定义:

    MySQL的权限定义就是SQL语句。

    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以上所有权限,一般是普通管理员拥有的。

    with grant option:超级管理员才具备的,给别的用户授权的功能。

8.0版本新特性(加入了role的概念)

①授权管理:

mysql>grant ALL  on wordpress.* to wordpress@'172.16.1.%' identified by '123';

grant 权限 on 范围              用户                              identified by '密码'

mysql>grant select,update,insert,delete on wordpress.* to wordpress@'172.16.1.%' identified by '123';

*.* 所有的库所有的表

wordpress.* 该库下的所有表 推荐这种

wordpress.t1 该数据库下的t1表

②例子:

需求,从Windows中的navicat软件或SQLyon软件管理mysql数据库。

创建业务用户能够对wordpress业务库进行操作

mysql>grant select,update,delete,insert on wordpress.*  to newuser@'172.1.16.%'identified by '123';

③查看权限:

mysql>show grants for newuser@'172.1.16.%'

④回收权限

mysql>revoke delete,update on wordpress.* from newuser@'172.1.16.%';

文章转载自蜜蜂点滴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论