在数据库操作过程,经常会遇到分配普通用户权限问题,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
授权需求
创建一个管理员用户root,可以通过10网段,管理数据库
grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;创建一个应用用户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 -P3306SOCKET:
mysql -uroot -p -S /tmp/mysql.sock



