相关内容原文地址:
CSDN:dayi_123:[mysql数据库用户及用户权限管理](https://blog.csdn.net/dayi_123/article/details/82989264)



一、Mysql数据库的权限

1.1 mysql数据库用户权限级别

  1. 全局性管理权限:作用于整个mysql实例级别
  2. 数据库级别:作用于指定的某个数据库上或者所有数据库上
  3. 数据库对象级别权限:作用于指定的数据库对象上(表或者视图)

1.2 mysql数据库用户权限

权限名称 权限说明
All/All Privileges 全局或者全数据库对象级别的所有权限
Alter 修改表结构的权限,但必须要求有create和insert权限配合
Alter routine 修改或者删除存储过程、函数的权限
Create 创建新的数据库和表的权限
Create routine 允许创建存储过程、函数的权限
Create tablespace 允许创建、修改、删除表空间和日志组的权限
Create temporary tables 创建临时表权限
Create user 创建、修改、删除、重命名user
Create view 创建视图
Delete 删除行数据
drop 删除数据库、表、视图的权限,包括truncate table命令
Event 查询,创建,修改,删除MySQL事件
Execute 执行存储过程和函数
File 在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select ,into outfile,load file()函数等
Grant option 授权或者收回给其他用户你给予的权限
Index 创建和删除索引
Insert 在表里插入数据
Lock 对拥有select权限的表进行锁定,以防止其他链接对此表的读或写
Process 允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令
Reference 允许创建外键
Reload 执行flush命令,指明重新加载权限表到系统内存中
Replication client 执行show master status,show slave status,show binary logs命令
Replication slave 允许slave主机通过此用户连接master以便建立主从复制关系
Select 从表中查看数据
Show databases 通过执行show databases命令查看所有的数据库名
Show view 通过执行show create view命令查看视图创建的语句
Shutdown 关闭数据库实例,执行语句包括mysqladmin shutdown
Super 允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令
Trigger 允许创建,删除,执行,显示触发器的权限
Update 修改表中数据的权限
Usage 创建一个用户之后的默认权限,本身代表无权限

1.3 存放用户权限表的说明

Mysql数据库用户权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中, MySQL实例启动后就加载到内存中。

存放权限的表 表的作用
user 存放用户账户信息以及全局级别(所有数据库)权限,(存放了那些用户可以访问那些数据库的权限)
db 数据库级别权限,决定了来自哪些主机的哪些用户可以访问此数据库
tables_priv 存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的那张表
columns_priv 存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的字段
procs_priv 存放存储过程和函数级别的权限

Mysql数据库权限管理中,字段user,password,authencation_string,db,table_name大小写敏感,而字段host,column_name,routine_name对大小写不敏感。

二、用户权限管理

2.1 创建用户及授权

Mysql用户创建可以通过create user/grant命令创建,也可以通过insert语句直接操作MySQL系统权限表来创建。

创建及给用户授权命令

创建用户:

CREATE USER username@'host' IDENTIFIED BY 'password'

用户授权:

GRANT permission ON database.tables TO username@’host’

创建用户并授权:

GRANT permission ON database.tables TO username@'hostt'  WITH GRANT OPTION;

MYSQL创建用户及给用户授权的用户名主机部分由两部分组成,分别为用户名和登录主机名,格式为’username’@’hostname’;hostname字段可以使用主机名或者ip地址,同时hostname字段允许使用”%”和”_”两种字符进行匹配。

# 创建用户dayi123并授予本地登录所有库所有权限
mysql> create user 'dayi123'@'localhost' identified by 'dayi123';
mysql> grant all privileges on *.* to 'dayi123'@'localhost' with grant option;
# 创建用户用户dayi通过192.168.0.0段ip地址登录的增删该查跟新库web的权限
mysql> grant select,insert,update,delete,create,drop on web.* to 'dayi'@'192.168.%.%' identified by 'dayi123';
# 给root用户授权可以通过192.168.0.0段地址登录
mysql> grant all on *.* to root@'192.168.%.%' identified by 'dayi123';

2.2 用户权限查看

查看已经授权给用户权限信息命令:show grants for ‘username’@’host’

# 查看授权给'dayi'@'192.168.%.%'的权限信息
mysql> show grants for 'dayi'@'192.168.%.%';
+---------------------------------------+
| Grants for dayi@192.168.%.% |
+---------------------------------------------------+
| GRANT USAGE ON *.* TO 'dayi'@'192.168.%.%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `web`.* TO 'dayi'@'192.168.%.%' |
+---------------------------------------------------+
2 rows in set (0.00 sec)

查看创建用户的语句:show create user ‘username’@’host’

# 查看给用户’dayi’没有授权的信息
mysql> show create user dayi@'192.168.%.%';
+------------------------------------------+
| CREATE USER for dayi@192.168.%.% |
+--------------------------------------------+
| CREATE USER 'dayi'@'192.168.%.%' IDENTIFIED WITH 'mysql_native_password' AS '*8FD40AC91E6D5D89D1060096FDEF8A4ECAA05B5C' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
+-----------------------------------------------+
1 row in set (0.00 sec)

2.3 收回用户权限

收回用户权限是可以通过语句revoke完成,命令格式为:

Revoke permission on ‘database’,’tables’ from ‘username’@’host’
# 收回用户权限是可以通过语句revoke完成,命令格式为:
Revoke permission on ‘database’,’tables’ from ‘username’@’host’

2.4 设置用户密码

Mysql数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。

修改其他用户密码(当前用户要有权限),一般在root用户下操作

登录mysql后的修改命令:

Alter user ‘username’@’host’ identified by ‘newpassword’
Set password for ‘username’@’host’=password(‘newpassword’)
Grant user on permission to ‘user’@’host’ identified by ‘newpassword’

在系统命令行下修改:

mysqladmin –u uername –h host password “newpassword”
# 修改dayi123的密码为dayi1234
mysql> alter user 'dayi123'@'localhost' identified by 'dayi1234';
Query OK, 0 rows affected (0.35 sec)
# 修改dayi远程登录密码为dayi1234
mysql> set password for 'dayi'@'192.168.%.%'=password('dayi1234');
Query OK, 0 rows affected, 1 warning (0.00 sec)

修改当前用户密码

alter user user() identified by ‘newpassword’
set password=password(‘newpassword’)
# 修改当前登录的root的密码为dayi1234
mysql> alter user user() identified by 'dayi1234';
Query OK, 0 rows affected (0.00 sec)

2.5 删除用户

删除命令:drop user ‘username’@’host’

# 删除用户dayi远程登录
mysql> drop user 'dayi'@'192.168.%.%';
Query OK, 0 rows affected (0.00 sec)
# 查看删除后的用户
mysql> select user,host from mysql.user;
+---------------+-------------+
| user | host |
+---------------+-------------+
| root | 192.168.%.% |
| dayi | localhost |
| dayi123 | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-------------+

2.6 用户的锁定与解锁

在创建用户时或用户创建后可以将用户锁定,用户被锁定后,此用户无法完成登录,锁定与解锁的命令如下:

在创建用户时锁定用户:

     Create user ‘username’@’host’ identified by ‘password’ account lock;

用户创建受锁定用户L

     Alter user ‘username’@’host’ account lock

解锁用户:alter user ‘username’@’host’ account unlock;

# 锁定用户dayi123
mysql> alter user 'dayi123'@'localhost' account lock;
Query OK, 0 rows affected (0.00 sec)
# 用户被锁定后等录时报如下错:
~]# mysql -udayi123 -p
Enter password:
ERROR 3118 (HY000): Access denied for user 'dayi123'@'localhost'. Account is locked.
# 解锁用户dayi123
mysql> alter user 'dayi123'@'localhost' account unlock;
Query OK, 0 rows affected (0.00 sec)

2.7 设置密码过期策略

Mysql数据库用户同系统用户一样,可以设置密码过期策略,密码的过期天数可以在配置文件里面设置,也可以通过命令设置,通过命令为每个用户设置密码的过期天数则会覆盖系统配置文件中的设置。

  1. 配置文件中设置

    选项:default_password_lifetime=”过期天数” :如果设置为0,则密码永不过期。
  2. 通过命令设置
alter user ‘username’@’localhost’ password expire interval number day; 设置过期天数
alter user ‘username’@’localhost’ password expire never; 设置密码不过期
alter user ‘username’@’localhost’ password expire default; 默认过期策略
alter user ‘username’@’localhost’ password expire; 手动强制密码过期
#设置用户dayi123的密码180天后过期
mysql> alter user 'dayi123'@'localhost' password expire interval 180 day;
Query OK, 0 rows affected (0.00 sec)
# 设置用户dayi的密码立即过期
mysql> alter user 'dayi'@'localhost' password expire;
Query OK, 0 rows affected (0.00 sec)
# 设置密码过期后执行命令时需要修改密码才能执行命令
]# mysql -udayi –p
……
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

2.8 mysql数据库用户资源限制

通过修改mysql数据库资源限制可以限制用户在某个时间段内连接mysql数据库的时间、执行语句的次数等。

  1. 设置参数:
max_user_connections:全局选项,限制所有用户在同一时间连接mysql数据库实例的数量
MAX_QUERIES_PER_HOUR:一个用户在一个小时内可以执行查询的次数(基本包含所有语句)
MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次数(仅包含修改数据库或表的语句)
MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接MySQL的时间
MAX_USER_CONNECTIONS:一个用户可以在同一时间连接MySQL实例的数量
  1. 设置mysql数据库用户资源限制

    设置mysql数据库用户资源限制时可以在创建用户时设置,也可以在用户创建完成后通过命令设置。
# 创建用户day,并对用户day的资源进行控制
mysql> create user 'day'@'localhost' identified by 'dayi123' with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;
Query OK, 0 rows affected (0.00 sec)
# 对用户dayi进行资源控制
mysql> alter user 'dayi'@'localhost' with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;
Query OK, 0 rows affected (0.00 sec)

当需要取消某个选项的,只需将某个选项的值设置为0即可。

三、Navicat设置mysql用户数据库权限



点击上图的新建用户,可以看到相关权限的配置。

Mysql数据库用户及用户权限管理,Navicat设置用户权限的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)    ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览  ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    ...

  4. 05 Linux系统下的用户以及用户权限管理(权限管理介绍、用户管理、常见命令介绍)

    这一节我们介绍Linux的用户以及权限管理的前半段,包括:1.权限管理介绍: 2.用户管理: 3.常见命令 权限管理介绍 权限管理: 为了访问计算机资源,我们需要对其进行授权才能访问,根据什么东西来进 ...

  5. linux的用户扩充权限管理acl和用户使用系统资源的限制

    用户扩充权限管理 acl 1.扩充权限的方式 文件扩充权限 ACL 磁盘配额 2.文件扩充权限 1.安全位 安全位   ---set位    SUID  SGID   set仅可以加给 u.g, 如: ...

  6. 使用TreeDMS进行MySQL数据库的Web页面远程管理

    在互联网应用蓬勃发展的时代背景下,各种各样的网络平台,网络应用,移动应用层出不穷,那么这些应用及平台都需要使用到数据库.如何高效的对数据进行日常维护.管理.监控成为迫切需要解决的问题. 基于web的方 ...

  7. 『学了就忘』Linux权限管理 — 53、ACL权限详解

    目录 1.什么是ACL权限 2.开启ACL 3.ACL权限的相关命令 (1)设定ACL权限 (2)查询文件的ACL权限 (3)设置文件ACL权限给用户组 (4)给文件夹和里边的文件同时赋予ACL权限 ...

  8. linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)

    process(进程) 1 计算资源 权限 用户(获取资源或服务的凭证或标识) 用户,容器,关联权限:用户组(标识符),方便地指派权限 2 用户.组.权限   安全上下文(secure context ...

  9. 基于吉日嘎底层架构的Web端权限管理操作演示-用户管理

    相信博客园的朋友对吉日嘎拉都不陌生,相信很多人也买了他的源码,应用于自己的项目. 但是你有没有过一个困惑? 那就是:没有一个基于网页的权限管理界面. 今天,这一切都不再是问题,我花了3年时间研究学习并 ...

随机推荐

  1. Maven的工程类型有哪些?

    POM工程:POM工程是逻辑工程.用在父级工程或聚合工程中.用来做jar包的版本控制. JAR工程:将会打包成jar用作jar包使用.即常见的本地工程 - Java Project. WAR工程:将会 ...

  2. jQuery是如何实现?

    jQuery是什么? jQuery就是一个javascript的类库,函数库. jQuery是如何实现的? jQuery采用的是构造函数模式进行开发的,jQuery是一个类 常用的方法(CSS.属性. ...

  3. 基于http的netty demo

    1.引入netty的pom <dependency> <groupId>io.netty</groupId> <artifactId>netty-all ...

  4. 第13章节 BJROBOT 雷达跟随【ROS全开源阿克曼转向智能网联无人驾驶车】

    雷达跟随说明:注意深度摄像头的 USB 延长线,可能会对雷达扫描造成影响, 所以在雷达跟随前,把深度摄像头的 USB 延长线取下.另外雷达跟随范围大概是前方 50cm 和 120°内扫描到的物体都可以 ...

  5. [ABP教程]第二章 图书列表页面

    Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...

  6. 如何在Linux(CentOS7)环境搭建 Jenkins 服务器环境

    最近,我自己要亲手搭建一套完整的企业级 CI/CD 环境,这个环节里面涉及了很多内容,没有办法把这么多的内容都放在一篇文章里,所以 Jenkins 的安装和Java 的 JDK 安装我就是分了两篇文章 ...

  7. 【Java并发集合】ConcurrentHashMap源码解析基于JDK1.8

    concurrentHashMap(基于jdk1.8) 类注释 所有的操作都是线程安全的,我们在使用时无需进行加锁. 多个线程同时进行put.remove等操作时并不会阻塞,可以同时进行,而HashT ...

  8. Centos7 Nginx+PHP7 配置

    Centos7 Nginx+PHP7 配置 内容: 源码编译安装Nginx和PHP 配置PHP和Nginx,实现Nginx转发到PHP处理 测试 设置Nginx.PHP开机自启 安装的版本: Ngin ...

  9. Java开发手册之设计规约

    1.谨慎使用继承的方式来进行扩展,优先使用聚合/组合的方式来实现.说明:不得已使用继承的话,必须符合里氏代换原则,此原则说父类能够出现的地方子类一定能够出现,比如,"把钱交出来", ...

  10. 【Problems】端口被占用 查看是被谁占用并关闭它

    文章目录 Windows Linux 经常在Windows.Linux环境下运行JavaWeb项目,Tomcat的端口被占用了. 端口被占用就查看是被谁占用关闭它就行. Windows 在Window ...