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

MySQL授权管理与结构分层

anyux 2020-02-18
252

在数据库操作过程,经常会遇到分配普通用户权限问题,root权限是最高权限,本文讲述了权限管理



授权命令

 grant all on *.* to oldboy@'10.0.0.%' identified by '123' with grant option;
 grant 权限 on 作用目标 to 用户 identified by 密码 with grant option;
 grant select,insert,update,delete,create on wordpress.* to root@'localhost' identified by '123';

作用目标:

 *.*
 wordpress.*
 wordpress.t1

授权需求

  1. 创建一个管理员用户root,可以通过10网段,管理数据库

 grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;
  1. 创建一个应用用户wordpress,可以通过10网段管理wordpress库下的所有表进行select,insert,update,delete操作

 grant select ,insert,update,delete on wordpress.* to wordpress@'10.0.0.%' identified by '123'

回收权限

查找用户权限

 show grants for wordpress@'10.0.0.%';

回收delete权限

 revoke delete on wordpress.* from wordpress@'10.0.0.%';

回收授权权限

 revoke grant option on *.* from root@'10.0.0.%';


数据库分层


连接层

  • 提供连接协议

  • 用户验证

  • 提供连接线程

SQL层

  • 语法和SQL_MODE

  • 语义和权限

  • 解析

  • 优化器(代价)

  • 执行器

  • 查询缓存

  • 日志记录

    • 二进制日志

存储引擎层

  • 从磁盘读取数据页

  • 返回给SQL层


数据库结构

物理结构

数据库相当于Linux操作系统里的目录

表,对于MyISAM引擎和InnoDB有不同的结构

MyISAM结构

  • FRM存储列信息

  • MYD存储数据

  • MYI存储索引

InnoDB结构

  • FRM 存储列信息

  • IBD 存储数据

逻辑结构

数据库包含库名和库属性

数据表包含列和列属性,数据行,表的属性

  • 页:最小的存储单元,默认16k

  • 区:64个连续的页,共1M

  • 段:一个表就是一个段,包含一个或多个区

MySQL基础管理

启停

 mysql.server start ----> mysqld_safe ---->mysqld
 
 mysql.service       ------> mysqld

需要依赖于 /etc/my.cnf

维护性任务

我们一般地将参数添加到命令行中,也会读取/etc/my.cnf的内容,但是如果冲突,命令行优先级最高

 mysqld_safe --skip-networking --skip-grant-tables &

关闭数据库方法

对于MySQL使用上条方法启动,需要使用mysqladmin方法关闭

 mysqladmin -uroot -p123 shutdown

初始化配置

作用

  • 影响数据库的启动

  • 影响到客户端的功能

初始化配置的方法

  • 初始化配置文件(例如/etc/my.cnf)

  • 启动命令行上进行设置(例如:mysqld_safe mysqld)

  • 预编译时设置(仅限于编译安装时设置)

初始化配置文件的书写格式

 [标签]
 xxx=xxx
 [标签]
 xxxx=xxxx

配置文件标签的归类

[server]和[client]属于归纳类的标签,配置后,会影响所有小类的配置,不建议使用

服务器端

[mysqld][mysqld_safe][server]

客户端

[mysql][mysqladmin][mysqldump][client]

配置文件设置样板(5.7)

 #服务器端配置
 [mysqld]
 #用户
 user=mysql
 #软件安装目录
 basedir=/application/mysql
 #数据路径
 datadir=/data/mysql/data
 #socket文件位置
 socket=/tmp/mysql.sock
 #服务器id号
 server_id=6
 #端口号
 port=3306
 #客户端配置
 [mysql]
 #socket文件位置
 socket=/tmp/mysql.sock

配置文件读取顺序

数据库服务端程序从左到右依次读取文件,如果配置项发生冲突,以最新读取的为主。一般情况下使用/etc/my.cnf,不建议使用其他的配置文件,容易混乱

 [root@db01 ~]# mysqld --help --verbose | grep  my.cnf | head -1
 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

强制使用自定义配置文件

 mysqld_safe --defaults-file=/etc/myself.cnf &

MySQL的连接管理

mysql命令

如果同时使用TCPIP和SOCKET方式连接数据,以为TCPIP连接为主

注意:提前应该将用户授权做好

 grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;

TCPIP:

 mysql -uroot -p -h 10.0.0.1 -P3306

SOCKET:

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



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

评论