mysql数据库安全配置规范_MySQL数据库安全配置
tables_priv表指定表级权限。在这里指定的一个权限适用于一个表的所有列。
mysql> desc columns_priv;
+-------------+------------------------+------+-----+---------+----+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------------+------+-----+---------+----+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Table_name | char(64) binary | | PRI | | |
| Column_name | char(64) binary | | PRI | | |
| Timestamp | timestamp(14) | YES | | NULL | |
| Column_priv | set('Select','Insert', | | | | |
| | 'Update','References') | | | | |
+-------------+------------------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
columns_priv表指定列级权限。在这里指定的权限适用于一个表的特定列。
2)MySQL授权表运行机制
MySQL的访问控制分两个步骤:
a)服务器检查是否允许该用户连接。
b)如果该用户有权连接,那么服务器还会检查它的每一个请求是否有足够的权限。比如:用户检索数据库中的一个表需要有这个数据库的select权限,用户删除数据库中的一个表需要有这个数据库的drop权限。
授权表的user, db, host表使用这两个步骤,tables_priv和columns_priv表只使用第二步(检查请求)。每个授权表包含决定一个权限何时运用的范围列和决定授予哪种权限的权限列。
范围列指定表中的权限何时运用。每个授权表条目包含User和Host列来指定权限何时运用于一个给定用户从给定主机的连接。其他表包含附加的范围列,如db表包含一个Db列指出权限运用于哪个数据库。类似地,tables_priv和columns_priv表包含范围字段,缩小范围到一个数据库中的特定表或一个表的特定列。
下面是user表的Host字段和User字段组合的一些例子:
+-----------------------------+--------+------------------------------------------------+
| Host值 | User值 | 匹配的连接 |
+-----------------------------+--------+-----------------------------------------------+
| 'x.y.z' | 'test' | test用户只能从x.y.z连接数据库 |
+-----------------------------+--------+-----------------------------------------------+
| 'x.y.z' | '' | 任何用户可以从x.y.z连接数据库 |
+-----------------------------+--------+-----------------------------------------------+
| '%' | 'test' | test用户可以从任意主机连接数据库 |
+-----------------------------+--------+----------------------------------------------+
| '' | '' | 任何用户可以从任意主机连接数据库 |
+-----------------------------+--------+-----------------------------------------------+
| '%.y.z' | 'test' | test用户可以从y.z域的任意主机连接数据库 |
+-----------------------------+--------+----------------------------------------------+
| 'x.y.% ' | 'test' | test用户可以从x.y.net, x.y.com, x.y.edu等主机连接数据库|
+-----------------------------+--------+----------------------------------------------+
| '192.168.1.1' | 'test' | test用户可以从IP地址为192.168.1.1的主机连接数据库 |
+-----------------------------+--------+---------------------------------------------+
| '192.168.1.% ' | 'test' | test用户可以从C类子网192.168.1中的任意主机连接数据库 |
+-----------------------------+--------+---------------------------------------------+
| '192.168.1.0/255.255.255.0' | 'test' | 同上 |
+-----------------------------+--------+--------------------------------------------+
SQL的字符串通配符%表示匹配任意字符,可以是0个字符,通配符_表示匹配一个字符。
权限列指出在范围列中指定的用户拥有何种权限。该表使用GRANT语句的权限名称。对于绝大多数在user、db和host表中的权限列的名称与GRANT语句中有明显的联系。如Select_priv对应于SELECT权限。
3)授权表使用举例
grant用于给增加用户和创建权限,revoke用于删除用户权限。
下面是一些用grant增加用户和创建权限的例子:
mysql> grant all privileges on *.* to test@localhost identified by 'test' with grant option;
这句增加一个本地具有所有权限的test用户(超级用户),密码是test。ON子句中的*.*意味着"所有数据库、所有表"。with grant option表示它具有grant权限。
mysql> grant select,insert,update,delete,create,drop privileges on test.* to test1@'192.168.1.0/255.255.255.0' identified by 'test';
这句是增加了一个test1用户,口令是test,但是它只能从C类子网192.168.1连接,对test库有select,insert,update,delete,create,drop操作权限。
用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。
给用户创建权限还可以通过直接修改授权表:
mysql> insert into user values("localhost","test",password("test"),"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");
mysql> flush privileges;
这两句和上面第一句grant的效果是一样的,也是增加了一个本地的test超级用户。我们看到用grant方便多了,而且还不需flush privileges
。
mysql> insert into user (host,user,password) values("192.168.1.0/255.255.255.0","test1",PASSWORD("test"));
mysql> insert into db values("192.168.1.0/255.255.255.0","test","test1","Y","Y","Y","Y","Y","Y","N","N","N","N")
mysql> flush privileges;
这三句和上面第二句grant的效果也是一样的,也是增加了一个只能从C类子网192.168.1连接,对test库有select,insert,update,delete,create,drop操作权限的test1用户,口令是test。要取消一个用户的权限,使用revoke语句。revoke的语法非常类似于grant语句,除了to用from取代并且没有identified by和with grant
option子句,下面是用revoke删除用户权限的例子:
mysql> revoke all on test.* from test1@'192.168.1.0/255.255.255.0';
这句revoke就撤消了上面第二句grant创建的权限,但是test1用户并没有被删除,必须手工从user表删除:
mysql> delete from user where user='test1';
mysql> flush privileges;
这样,test1用户就彻底删除了。
这些只是MySQL授权表的简单使用,更多详细的资料请见MySQL提供的手册。
mysql数据库安全配置规范_MySQL数据库安全配置相关推荐
- mysql数据库安全配置规范_MySQL数据库安全配置规范操作
#1.账号 以普通帐户安全运行mysqld,禁止mysql以root帐号权限运行,攻击者可能通过mysql获得系统root超级用户权限,完全控制系统. ##配置/etc/my.cnf [mysql.s ...
- linux中mysql主主搭建_mysql 主从配置 主主配置
MySQL 主从( MySQL Replication) ,主要用于 MySQL 的时时备份或者读写分离.在配置之前先做一下准备工作,配置两台 mysql 服务器,如果你的机器不能同时跑两台 Linu ...
- mysql安全配置基线_MySql数据库安全配置基线.doc
MySql数据库安全配置基线 Mysql数据库系统安全配置基线 版本版本控制信息更新日期更新人审批人V2.0创建2012年4月备注: 若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表 ...
- mysql主从配置安装_mysql主从配置完整版(二进制安装)
系统基础 centos6.5 mysql5.6 防火墙关闭,目录挂载等 fdisk /dev/sdb vgcreate datavg /dev/sdb1 lvcreate -L 99G -n data ...
- mysql设置数据库同步_MySQL数据库配置主从同步
1.环境说明:DB master: 172.16.1.55 DB slave:172.16.1.56 2.Server-id 配置(/etc/my.cnf): 主库配置server-id要比从库的ID ...
- mysql主从配置笔记_MySQL主从配置学习笔记
● 本打算买个云数据,为我的新项目做点安全保障.阿里云,腾讯云转了一圈,两个字太贵.不就数据有备份吗,既然这样那我不如自己来做备份. ● 家里有2个树莓派直接把mysql备份到他们上就好了,网上有教程 ...
- mysql主从配置常见问题_mysql 主从复制配置,以及常见问题解决!
一:我的mysql 5.7.15 ,系统是centos6.5 主从复制配置步骤: 瞅清楚!配置不要出错!! 二:遇到的问题 Got fatal error 1236 from master whe ...
- mysql主从配置错误_mysql主从配置失败,主从通讯失败
配置mysql主从的时候,检查slave状态,发现报错信息, Error 'The MySQL server is running with the --skip-grant-tables optio ...
- mysql写什么不同_mysql - 编译配置PHP时,两种配置写法有什么不同
在编译PHP时, --with-扩展库=DIR --enable-扩展库 这两种配置有什么不同 回复内容: 在编译PHP时, --with-扩展库=DIR --enable-扩展库 这两种配置有什么不 ...
最新文章
- iOS 自定义转场动画初探
- 高效排序算法(希尔排序)
- Python之文件操作
- 手撕 leetcode 中难题 第一天
- [转]高颜值、好用、易扩展的微信小程序 UI 库,Powered by 有赞
- 如何发现 Redis 热点 Key ,解决方案有哪些?
- Kinect开发学习笔记之(六)带游戏者ID的深度数据的提取
- swagger2 注解说明文档
- 心痛!你的快递可能已经被烧毁,13吨快递“无一生还”
- html之CSS设计(float定位和position定位详细分析)
- 雷军说的 WiFi 6 到底是什么?
- NLB群集的两种操作模式-2
- 知网论文CAJ格式免费转换成PDF,你学会了吗
- 运行Puttygen.exe生成密钥
- java生成随机数的代码_java生成随机数的代码
- 有域名和服务器怎么建设网站新手,新手如何快速搭建一个新的网站【零基础】...
- edge浏览器打开html文件路径被拆分,Edge浏览器显示网页排版错位
- 磨金石教育摄影技能干货分享|中国风摄影大师——郎静山
- 线性探测法和平方探测法 - 哈希表 - 完整代码
- docker设置开启机自启动