16.1 MYSQL数据库所提供的权限

16.1.1 系统表 mysql.user

1. 用户字段

  • Host:主机名;
  • User:用户名;
  • Password:密码。

2. 权限字段

以“_priv”字符串结尾的字段

通常,可以使用GRANT语句为用户赋予一些权限,也可以通过Update语句更新user表的方式来设置权限;

不过,修改user表之后,一定要执行一下FLUSH PRIVILEGES,否则可能会出现如下错误:

Error (1133): Can’t find any matching row in the user table

user表中的列 权限名称 权限范围
 Create_priv  CREATE  数据库、表或索引
 Drop_priv  DROP  数据库或表
 Grant_priv  GRANT OPTION  数据库、表、存储过程、函数
 References_priv  REFERENCES  数据库和表
 Alter_priv  ALTER  修改表
 Delete_priv  DELETE  删除表
 Index_priv  INDEX  用索引查询表
 Insert_priv  INSERT  插入表
 Select_priv  SELECT  查询表
 Update_priv  UPDATE  更新表
 Create_view_priv  CEATE VIEW  创建视图
 Show_view_priv  SHOW VIEW  查看视图
 Create_routine_priv  CREATE ROUTINE  创建存储过程或函数
 Alter_routine_priv  ALTER ROUTINE  修改存储过程或函数
 Execute_priv  EXECUTE  执行存储过程或函数
 File_priv  FILE  加载服务器主机上的文件
 Create_tmp_table_priv  CREATE TEMPORARY TABLES  创建临时表
 Lock_tables_priv  LOCK TABLES  锁定表
 Create_user_priv    CREATE USER  创建用户
 Process_priv  PROCESS  服务器管理
 Reload_priv   RELOAD  重新加载权限表
 Repl_client_priv  REPLICATION CLIENT  服务器管理
 Repl_slave_priv  REPLICATION SLAVE  服务器管理
 Show_db_priv  SHOW DATABASES  查看数据库
 Shutdown_priv  SHUTDOWN  关闭服务器
 Super_priv  SUPER  超级权限
Event_priv    创建、修改和删除事件
Trigger_priv    创建和删除触发器

3. 安全字段

字段名 含义
ssl_type 支持ssl标准加密的安全字段
ssl_cipher 支持ssl标准加密的安全字段
x509_issuer 支持x509标准的字段
x509_subject 支持x509标准的字段

在MySQL中,包含ssl字符串的字段主要用来实现加密,包含x509字符串的字段主要用来标识用户。

MySQL的字段通常不支持ssl标准,可以通过以下语句查看字段是否支持ssl标准:

SHOW VARIABLES LIKE 'have_openssl'

4.资源控制字段

  • max_questions:每小时可以允许执行多少次查询;
  • max_updates:每小时可以允许执行多少次更新;
  • max_connections:每小时可以建立多少连接;
  • max_user_connections:单个用户可以同时具有的连接数。

默认值为0,表示无限制。

16.1.2 系统表 mysql.db 和 mysql.host

1.用户字段

mysql.db

  • Host:主机名;
  • User:用户名;
  • Db:数据库名。

mysql.host 是mysql.db的扩展

  • Host:主机名;
  • Db:数据库名。

当查找某个用户的权限,首先会从系统表 mysql.db 中查找,如果找不到Host的值,则到 mysql.host 去查找。

2.权限字段

mysql.db比mysql.host多了两个字段:

  • Create_routine_priv:创建存储过程或函数权限。
  • Alter_routine_priv:修改存储过程或函数权限。

16.1.3 其他权限表

  1. mysql.tables_priv:实现单个表的权限设置。
  2. columns_priv:实现单个字段列的权限设置。

16.2 MYSQL数据库所提供的用户机制

16.2.1 登录和退出MySQL

mysql -h hostname|hostIP -p port -u username -p DatabaseName -e "SQ语句"

-p port:未指定默认为3306;

DatabaseName:未指定默认为mysql.

EXIT|QUIT

16.2.2 创建普通用户账户

1.CREATE USER

CREATE USER username[IDENTIFIED BY [PASSWORD] 'password']
[,IDENTIFIED BY [PASSWORD] 'password']
......

2.INSERT INTO

INSERT INTO mysql.user(Host,User,Password[,ssl_cipher,x509_issuer,x509_subject])
VALUES('%','username',PASSWORD('password')[,'','','']);

3.GRANT

GRANT priv_type ON databasename.tablename
TO username[IDENTIFIED BY [PASSWORD] 'password']
[,username [IDENTIFIED BY [PASSWORD] 'password']]
......

16.2.3 利用root修改root用户账号密码

1.mysqladmin

mysqladmin -u username -p password "newpassword";

2.SET PASSWORD

SET PASSWORD=PASSWORD("newpassword");

3.UPDATE

UPDATE mysql.user SET password=PASSWORD("newpassword")
WHERE user="root" AND host="localhost";

16.2.4 利用root修改普通用户账号密码

1.GRANT

GRANT priv_type ON database.table
TO user[IDENTIFIED BY [PASSWORD] "newpassword"];

2.SET PASSWORD FOR

SET PASSWORD FOR
'username'@'hostname'=PASSWORD("newpassword");

*当通过普通用户账户登录到MySQL服务器后,可以通过SET命令修改自己的密码。

SET PASSWORD=PASSWORD("newpassword");

3.UPDATE

UPDATE mysql.user SET password=PASSWORD("newpassword")
WHERE user="username" AND host="localhost";

16.2.5 删除普通用户账号

1.DROP USER

DROP USER user1[,user2] ...

2.DELETE FROM

DELETE FROM mysql.user
WHERE user="username" AND host="localhost";

16.3 权限管理

16.3.1 对用户进行授权

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] 'password']
[,user [IDENTIFIED BY [PASSWORD] 'password']]
...
WITH with_option[with_option]

with_option参数取值:

  • GRANT OPTION:被授权的用户可以将这些权限赋予给别的用户;
  • MAX_QUERIES_PER_HOUR count:设置每小时可以允许执行count次查询;
  • MAX_UPDATES_PER_HOUR count:设置每小时可以允许执行count次更新;
  • MAX_CONNECTIONS_PER_HOUR count:设置每小时可以建立count个连接;
  • MAX_USER_CONNECTIONS count:设置单个用户可以同时具有的count个连接数;

16.3.2 查看用户所拥有权限

SHOW GRANTS FOR 'username'@'localhost' \G

16.3.3 收回用户所拥有权限

REVOKE priv_type[(column_list)] ON database.table
FROM user1 [IDENTIFIED BY[PASSWORD] 'password']
[,user2 [IDENTIFIED BY[PASSWORD] 'password']]
...

收回全部权限:

REVOKE ALL PRIVILEGES,GRANT OPTION
FROM user1 [IDENTIFIED BY[PASSWORD] 'password']
[,user2 [IDENTIFIED BY[PASSWORD] 'password']]
...

参考博客:http://www.cnblogs.com/kissdodog/p/4173337.html

MYSQL数据库学习十六 安全性机制的更多相关文章

  1. MYSQL数据库学习十八 数据库维护和性能提高

    18.1 数据备份 可能造成数据损失的原因有: 存储介质故障:保存数据库文件的磁盘设备损坏,用户没有数据库备份导致数据彻底丢失. 用户的错误操作:如误删了某些重要数据,甚至整个数据库. 服务器的彻底瘫 ...

  2. MYSQL数据库学习十五 事务

    15.1 事务概述 当多个用户访问同一份数据,一个用户在更改数据的过程中可能有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致性状态变为另一个一致性状态,使用事务处理是非常必要的. 事务有以 ...

  3. MYSQL数据库学习十四 存储过程和函数的操作

    14.1 为什么使用存储过程和函数 一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句. 存储过程和函数的优点: 允许标准组件式编程,提高了S ...

  4. MYSQL数据库学习十二 使用MySQL运算符

    12.1 算术运算符 + - * /(DIV) %(MOD) 12.2 比较运算符 > < = <=> != <> >= <= BETWEEN AND ...

  5. MYSQL数据库学习十 单表数据记录查询

    10.1 简单数据记录查询 SELECT field1,field2,...fieldn FROM table_name; “*” ——查询所有记录 SELECT * FROM table_name; ...

  6. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

随机推荐

  1. Jmeter MD5插件

    实际业务中,会要求 HTTP 协议中附加 MD5 校验字段, 防止请求参数被恶意篡改, 对于开发同学来说, 这是个很简单的需求. 但是给自动化测试增加了难度, Jmeter 原生不支持这个功能,应测试 ...

  2. ssh (Spring , Struts2 , Hibernate)框架的配置使用

    思维导图(基本配置) 1. 需要引入的包 2 .spring-config.xml 的配置 <!-- 链接数据库 外部配置文件扫入 --> <context:property-ove ...

  3. GetWindowRect、GetClientRect、ScreenToClient与ClientToScreen

    GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置. GetClientRect取得窗口客户区(不包括非客 ...

  4. JAVA代码发送邮件示例和解释(二)

    之前有使用过一次在程序中发邮件的功能,也写了一篇相关的笔记,当时使用的是163邮箱,经过测试多个163账号都是可行的.但是最近把账号换成中国移动@chinamobilesz.com这种结尾的时候,却一 ...

  5. GitHub上最火的Android开源项目(一)

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  6. 视频显示格式720p

    720p是一种视频显示格式.字母p意为逐行扫描(progressive scan),数字720则表示水平方向有720条扫描线. 通常720p的画面分辨率为1280×720,一般亦可称为高画质(HD). ...

  7. eclipse在线安装JBoss Tool过程

    eclipse在线安装JBoss Tool过程 1.打开eclipse,依次点击"help--->Install New Software..." 2.再单击"Ad ...

  8. HihoCoder - 1139

    在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后终于准备出海捞船和敌军交战了.在这个游戏里面,海域是N个战略点(编号1..N)组成,如下图所示其中红色的点 ...

  9. 标注-隐马尔可夫模型HMM的探究

    1 HMM基本概念1.1 定义1.2 观测序列生成过程1.3 HMM的三个问题2 概率计算算法2.1 直接计算算法2.2 前向算法forward algorithm2.3 后向算法2.4 一些概率与期 ...

  10. Aspose实现Office转PDF (ASP.NET)

    0.添加Aspose的DLL 1.可以直接去官网下载,不过默认是带水印的,如需去除水印可以购买 2.当然也可以在国内的一些下载站下载 3.将Aspose.Cells.dll.Aspose.Words. ...