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. Innotop简单介绍

      Innotop介绍 Innotop是一款Perl脚本编写.开源.功能强大的MySQ的监控工具,它通过文本模式(命令行模式)监控,功能强大,配置简单,易于使用等等特性.Innotop这个项目位于ht ...

  2. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

  3. dojo省份地市级联之省份Dao接口类(三)

    dojo省份地市级联之省份Dao接口类 ProvinceDao.java: /** * 省份-Dao */ package com.you.dao; import java.util.List; im ...

  4. MyEclipse弹出提示窗口

    MyEclipse弹出提示窗口 1.弹窗如下

  5. 浅谈IT企业挑选技术人员招聘几个要点

    在实际人员招聘的一些感想总结,企业需要怎么样的人才,个人总结如下: 1.技术能力不是第一位 企业在招聘一个人的时候往往看你第一点不是技术实力,而是你个人言谈行为和态度,往往一个面试你的人员他不可能在半 ...

  6. .Net学习计划

    .Net培训 第一部分:.Net基础        .Net基础:数据类型.变量.运算符.分支结构.循环结构.方法.反编译器.递归.递归算法的非递归优化:        面向对象:异常.封装继承多态. ...

  7. springboot入门的一点基础

    什么是SpringBoot java问世20年由于,发展到现在从技术角度来说已经很成熟,开发过程中我们总是在想如何去提高团队开发规范性.减少重复配置.避免低效开发.部署发布时流程的复杂度以及第三方技术 ...

  8. Keras常见问题及解答

    Keras官方中文版文档 如何引用 Keras? 如何在 GPU 上运行 Keras? 如何在多 GPU 上运行 Keras 模型? "sample", "batch&q ...

  9. canvas实现水波纹效果

    本文将会从水波的基本原理开始,详细讲解在canvas中模拟水波扩散,分析并计算水波的能量分布,并通过振幅模拟水波对图像的折射效果,最后实现水波特效. 水波基本原理 首先复习一波高中物理知识. 波是指振 ...

  10. [BZOJ2820][Luogu2257]YY的GCD

    BZOJ权限题 Luogu 题意:给出n,m,求: \[\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)\mbox{为质数}]\] 多组数据,\(n\le 10^7\) s ...