目录

  • MySQL权限与安全管理之权限表与账户管理
    • 权限表
      • user表
      • db表
      • tables_priv表和columns_priv表
      • procs_priv表
    • 账户管理
      • 登录和退出MySQL服务器
      • 新建普通用户
      • 删除普通用户
      • root用户修改自己的密码
      • root用户修改普通用户的密码

MySQL权限与安全管理之权限表与账户管理

MySQL用户可以分为root用户和普通用户。root用户是超级管理员,拥有所有权限,包括创建用户,删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。

权限表

MySQL服务器通过权限表来控制用户对数据的访问,权限表存放在MySQL数据库中,由MySQL_install_db脚本初始化。存储账户权限信息的表主要有user、db、host、table_priv、columns_priv和procs_priv.

user表

user表记录允许连接到服务器的账号信息,里面的权限是全局级的。

用户列

user表的用户列包括Host、User、authentication_string,分别表示主机名、用户名和密码。用户连接服务器,输入的账户信息中的用户名、主机名和密码三值与User表中对应匹配的时候才允许建立连接。

权限列

决定用户权限。包括查询权限、修改权限等普通权限,还包括了关闭服务器、超越权限和加载用户等高级权限。普通权限用于操作数据库;高级权限用于数据库管理。

user表中对应的权限是针对所有用户数据库的。字段值的类型为ENUM,默认值为N。如果要修改权限,可以使用GRANT语句或UPDATE语句更改user表的字段来修改用户对应的权限。

安全列

安全列只有六个字段,两个是ssl相关的,两个是x509相关的,另外两个是授权插件相关的。ssl用于加密;x509标准可用于标识用户;Plugin字段标识可以用于验证用户身份的插件。可以通过SHOW VARLABLES LIKE 'have_openssl'语句来查询服务器是否支持ssl功能。

资源控制列

资源控制列:限制用户使用的资源

(1)max_questions----用户每小时允许执行的查询操作次数。

(2)max_updates----用户每小时允许执行更新的操作次数。

(3)max_connections----用户每小时允许执行的连接操作次数。

(4)max_users_connections----用户允许同时建立连接的次数。

一小时用户操作次数超过资源控制限制,用户将被锁定,直到下一小时才可以执行对应操作。可以使用GRANT语句更新字段值。

db表

db表存储用户对数据库的操作权限,决定哪个主机存取哪个数据库。

用户列

用户列字段:Host、User、Db,标识从某个主机连接某个用户对某个数据库的操作权限。

权限列

db表中create_routine_priv和alter_routine_priv两个字段表明用户是否有创建和修改存储过程的权限。

tables_priv表和columns_priv表

tables_priv表:对表设置操作权限,columns_priv表对表某一列设置权限。

tables_priv表有8个字段:Host、Db、User、Table_name、Grantor、Timestamp、Table_priv和column_priv

(1)Host、Db、User、Table_nam 四个字段表示主机名,数据库名、用户名和表名。

(2)Grantor表示修改该记录的用户。

(3)Timestamp字段表示修改该记录的时间。

(4)Table_priv表示对表的操作权限,包括Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter。

(5)Column_priv字段表示对表中列的操作权限,包括Select、Insert、Update、References。

columns_priv表有7个字段:Host、Db、User、Table_name、Column_name、Timestamp、Column_priv。其中Column_name用来指定对哪些数据列具有操作权限。

procs_priv表

procs_priv表可以对存储过程和存储函数设置操作权限。

procs_priv表有8个字段:Host、Db、User、Routine_name、Routine_type、Grantor、Timestamp、Proc_priv。

(1)Routine_name表示存储过程或函数的名称。

(2)Routine_type表示存储过程或函数的类型。该字段的两个值:FUNCTION(函数)和PROCEDURE(存储过程)

(3)Grantor是插入或修改该记录用户。

(4)Proc_priv表示拥有的权限,包括Execute、Alter Routine、Grant 3种。

(5)Timestamp表示记录更新时间.

账户管理
登录和退出MySQL服务器

查看命令帮助信息:MySQL -help

常用参数:

-h 主机名,指定主机名或ip,默认是local host。

-u 用户名,指定用户名。

-p 密码,指定登录密码。注意:该参数后面的字符串和-p之前不能有空格。

-P 端口号,MySQL服务器的默认端口号为3306。

-e 执行SQL语句。指定了该参数,将在登录后执行-e后面的命令或SQL语句并退出。

例1:使用root用户登录到本地MySQL服务器的mysql库中,命令如下:

mysql -h localhost -u root -p mysql

例2:使用root用户登录到本地MySQL服务器的test_db数据库,同时执行一条查询语句,命令如下:

mysql -h localhost -u root -p test_db "DESC person;"
新建普通用户

1.使用CREATE USER语句创建新用户

CREATE USER语句会添加一个新的MySQL账户。使用CREATE USER语句用户,必须有全局的CREATE USER权限。

例3:使用CREATE USER语句创建新用户,用户名是chlinrei,密码是123456,主机名是localhost,命令如下:

CREATE USER 'chlinrei'@'localhost' IDENTIFIED BY '123456';

如果只指定用户名部分chlinrei,主机名部分为%,则对所有主机开放权限。

如果指定用户登录不需要密码,可以省略IDENTIFIED BY部分:

CREATE USER 'chlinrei'@'localhost' ;

2.直接操作MySQL用户表

使用INSERT语句,必须拥有MySQL数据库的INSERT权限。

例4:使用INSERT创建新账户,用户名为chlinrei,主机名称为localhost,密码为123456,语句如下:

INSERT INTO user(Host,User,authentication_string)
VALUES('localhost','chlinrei',MD5('123456'));
删除普通用户

1.使用DROP USER语句删除用户

DROP USER语句的语法如下:

DROP USER user[,user];

DROP USER语句用于删除一个或多个用户。要使用DROP USER,必须有MySQL数据库的全局create user权限或delete权限。使用GRANT或REVOKE相同的格式为每个账户命名。

使用DROP USER,可以删除一个账户和其权限,操作如下:

DROP USER 'user'@'localhost';
DROP USER;

第1条语句可以删除user在本地登录权限;第2条语句可以删除来自所有授权表的账户权限记录

2.使用DELETE语句删除用户

DELETE 语句基本语法格式如下:

  DELETE FROM MySQL.user WHERE host='hostname' and user='username'

host和user为user表中的两个字段,两个字段的组合确定所要删除的账户记录。

root用户修改自己的密码

使用UPDATA语句修改root用户密码的语句如下:

UPDATA mysql.user set authentication_string=MD5("123456") WHERE USER="root" and host="localhost";

PASSWORD()函数用来加密用户密码。执行UPDATA语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。

root用户修改普通用户的密码

1.使用set语句修改普通用户的密码

使用SET语句修改普通用户密码的语法格式如下:

SET PASSWORD FOR 'user'@'localhost'='123456';

SET语句执行成功,user用户的密码被设置为123456.

2.使用UPDATE语句修改普通用户的密码

使用UPDATA语句修改用户密码的语法如下:

  UPDATE MySQL.user SET authentication_string=MD5("123456")  WHERE User="username" AND Host="hostname";

MD5()函数用来加密用户密码。执行UPDATE语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。

MySQL权限与安全管理之权限表与账户管理相关推荐

  1. MySQL8.0 权限与安全管理

    MySQL是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定允许的权限.MySQL用户可以分为普通用户和root用户.root用户是超级管理员,拥有所有权限,包括创建用户.删除用户和修 ...

  2. 创建数据账号只有个别表的权限_创建MySQL用户 赋予某指定库表的权限

    摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...

  3. mysql全备和指定库和表备份,mysql日志的分类简介和作用, mysql加速跳过域名解析,mysql权限授予与收回,数据库实用篇~~Tring

    mysql改密,重置,备份,权限和日志 改密~ 修改密码 重置密码 步骤 数据库备份 用到的命令: 可加参数 : -A 参数 例子: -B 参数 例子: 备份指定数据库的某个表 恢复表 创建用户 操作 ...

  4. mysql给用户建表权限_创建MySQL用户 赋予某指定库表的权限

    摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...

  5. mysql pma用户_MYSQL用户权限管理学习笔记

    MYSQL用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1)       超级管理员用户(root),拥有全部权限 (2)       普通用户,由root ...

  6. mysql中usage是什么权限?

    2019独角兽企业重金招聘Python工程师标准>>> mysql中usage是什么权限? 50 如题,我在phpmyadmin中发现自己新建的用户的权限是usage,这是什么权限啊 ...

  7. mysql 远程_MYSQL开启远程访问权限的方法

    1.登陆mysql数据库 mysql -u root -p 查看user表 mysql> use mysql; Database changed mysql> select host,us ...

  8. MySQL为其他用户创建数据库_MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限...

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  9. mysql添加用户,设置权限,回收权限,删除用户详解

    简言 1. mysql的用户信息,权限管理等很简单,在数据库mysql的表user中可以查询,操作 示例 1. 创建用户,带密码,同时限制登录IP 模板:create user '新用户名'@'loc ...

最新文章

  1. 神策数据与达观数据达成战略合作,共拓大数据服务市场
  2. Android如何使用API
  3. C语言 | C语言中main函数:int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
  4. (枚举)餐厅点餐(fzu2086)
  5. oracle11gr2克隆安装,VirtualBox+Oracle 11gR2 RAC安装总结
  6. Js中Array对象
  7. 阅读宋立恒《AI制胜:机器学习极简入门》第2章:机器学习中的数据预处理
  8. 文件存储 服务器 购买,filecoin联合挖矿VS自购存储服务器参与 , 我们该如何选择 ? 如何去规避风险 ?...
  9. tensorflow 提示没有models库
  10. 在笔记本上试用kvm[原]
  11. APK大小查看、定义、反编译、如何安装解压
  12. ThinkPHP整合微信支付之发裂变红包
  13. 查看Win10激活剩余时间
  14. 深度学习在点云分类中的研究综述————文献总结
  15. 如何更新服务器系统教程,服务器操作系统如何更新
  16. hadoop之mapreduce教程+案例学习(二)
  17. resnet50中的bottleneck
  18. redis“万金油”的String,为什么不好用了?
  19. 干掉Facebook,干掉扎克伯格!
  20. 2023天津工业大学计算机考研信息汇总

热门文章

  1. webconfig配置详解--转
  2. form表单的onsubmit() return问题
  3. 大数据模型交易平台案例:消费贷款客户营销分析解决方案
  4. 蓝桥杯嵌入式LCD液晶屏显示
  5. sonar问题:Font declarations should contain at least one generic font family
  6. kubeflow--安装使用pipeline
  7. [转]Clion2019破解-Jetbrains系列产品2019.1.1最新激活方法[持续更新]
  8. 寂静岭:理性与心魔的拔河
  9. MySQL学习(十六):数据类型之日期与时间类型
  10. 卷积与反卷积(转置卷积)关系的公式推导 及其各自的形式