在Mysql 中,权限设置非常重要,分配权限可以清晰的划分责任,管理人员只需要关注自己的任务即可,最重要的是保证系统数据安全。

1.授予权限

(1)权限控制主要是出于安全因素,因此需要遵循以下几个原则:

          a. 只授予能满足需要的最小权限,为了防止用户误操作和干坏事。比如用户只需要查询,只需赋予 serlect 权限就可以了,不用给用户 uodate 、insert 、delete 权限。

         b. 创建用户的时候限制用户的登录主机,一般是限制成指定IP 或者内网 IP.

         c. 初始化数据库时删除没有密码的用户。安装完数据库时会自动创建一些用户,这些用户没有密码。

         e. 为每个用户设置满足密码复杂度的密码。

         f. 定期清理不需要的用户。收回权限或者删除用户。

(2)授予权限使用 GRANT 命令,命令格式如下:

    GRANT  权限列表  ON  库名.表名   TO   用户名@主机地址 [IDENTIFIED BY ‘密码‘].

  命令格式很明确,是指定用户允许它操作某些表,对于这些表拥有相应的操作权限。

[root@bogon ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> grant select on school.info to 'user03'@'localhost' identified by '123abc';   
Query OK, 0 rows affected, 1 warning (0.00 sec)

使用户 user03 可以在主机 localhost 连接,密码是 123abc ,它拥有对数据库表 school.info 的 select 权限

mysql> quit
Bye
[root@bogon ~]# mysql -u user03 –p                          //使用user03 登录,进行验证
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> select * from school.info;                           //select 语句可以正常执行
+----+----------+-------+-------+
| id | name     | score | hobby |
+----+----------+-------+-------+
|  1 | zhangsan | 30.00 |     1 |
|  2 | lisi     | 74.00 |     2 |
|  3 | wangwu   | 86.00 |     3 |
|  4 | zhaoliu  | 95.00 |     4 |
+----+----------+-------+-------+
4 rows in set (0.00 sec)

mysql> insert into school.info (id,name,score,hobby) values (6,'lili',78,3);
ERROR 1142 (42000): INSERT command denied to user 'user03'@'localhost' for table 'info'    //执行 insert 语句没有足够权限
mysql>

使用GRANT 时有些问题需要注意:

      (1)当用户名和主机名在数据库中不存在时,用户和主机名被创建,也就是 user 表中多了一个用户数据,和使用创建新用户命令效果相同,登录密码是后面指定的密码。

      (2)当用户名和主机名在数据库中已经存在,后面设置的新密码可以覆盖旧密码,相当于修改密码的功能。

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select User,authentication_string,Host from user;
+-----------+-------------------------------------------+-----------+
| User      | authentication_string                     | Host      |
+-----------+-------------------------------------------+-----------+
| root      | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | localhost |
| mysql.sys | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | localhost |
| root      | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | %         |
| user01    | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | localhost |
| user03    | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | localhost |
| user02    | *3620754A963ECB3D7296097F9DA00C1FA5476B03 | localhost |
+-----------+-------------------------------------------+-----------+
6 rows in set (0.00 sec)

2.查看权限

查看用户拥有的权限可以使用 SHOW GRANTS 命令。命令格式如下:

SHOW GRANTS FOR ‘username’ @ ‘localhost’;

查看用户user03 的权限。

mysql> show grants for 'user03'@'localhost';                       
+---------------------------------------------------------+
| Grants for user03@localhost                             |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user03'@'localhost'              |
| GRANT SELECT ON "school"."info" TO 'user03'@'localhost' |
+---------------------------------------------------------+
2 rows in set (0.01 sec)

显示user03 对表school.info  拥有 select 权限,与之前设置相同。

3.撤销权限使用REVOKE  语句可以撤销指定用户的数据库权限。命令格式如下:

REVOKE  权限列表 ON  数据库名.表名  FROM  用户@主机名。

mysql> revoke select on school.info from 'user03'@'localhost';
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for 'user03'@'localhost';
+--------------------------------------------+
| Grants for user03@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO 'user03'@'localhost' |                
+--------------------------------------------+
1 row in set (0.00 sec)


mysql> show grants for 'user03'@'localhost';
+---------------------------------------------------------+
| Grants for user03@localhost                             |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user03'@'localhost'              |
| GRANT SELECT ON "school"."info" TO 'user03'@'localhost' |
+---------------------------------------------------------+
2 rows in set (0.00 sec)

4.权限列表说明

ALL                                                     设置GRANT OPTION 之外的所有权限

ALTER                                                 允许使用 ALTER TABLE

CREATE                                             允许使用  CREATE TABLE

CREATE USER                                  允许使用 CREATE USER

DELETE                                             允许使用 TELETE

INDEX                                               允许使用INDEX

INSERT                                              允许使用INSERT

SELECT                                               允许使用SELECT

UPDATE                                            允许使用IPDATE

DROP                                                 允许使用DROP TABLE

REPLICATION SLAVE                        允许从主服务器中读取二进制文件

SHOW ADTABASES                          允许显示所有数据







转载于:https://blog.51cto.com/13706703/2165630

Mysql 授权控制相关推荐

  1. mysql 授权是哪一个表_MySQL授权系统的五个表

    MySQL授权系统是由数据库中的五个表来实现,下面就为您详细介绍这五个和MySQL授权系统相关的表,如果您感兴趣的话,不妨一看. MySQL服务器的特点之一是,它在控制每个用户行为方面提供了极大的灵活 ...

  2. MySQL授权修改表结构_MySQL创建修改表结构

    一.数据库的概述 1.什么是数据库 DB,DataBase 数据库:依照某种数据模型进行组织并存放到存储器的数据集合 DBMS,DataBase Management System 数据库管理系统:用 ...

  3. linux mysql授权外部访问权限,Linux中安装Mysql授权远程访问

    Linux中安装MySQL 因为使用yum安装.安装过程需保证网络通畅 一.安装mysql 1.yum安装mysqlCentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql, ...

  4. MySQL授权用户及密码恢复设置

    MySQL密码恢复及设置 1.停止MySQL服务程序. 2.跳过授权表启动MySQL服务程序 skip-grant-tables(添加在配置文件) 3.重设root密码(更新user表记录) 4.以正 ...

  5. mysql可视化工具路径访问_windows开启3306端口并用可视化工具访问远程mysql(授权访问)...

    开启 mysql 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...

  6. mysql 授权root帐号可以远程访问,导入sql文件,登录mysql用root帐号,设置密码

    安装好了之后,MySQL默认是空密码,可以为root用户设置密码 ,注意大小写 mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('admi ...

  7. mysql授权不管用_MySQL_MySQL授权问题总结,我用localhost的root帐号不能连 - phpStudy...

    MySQL授权问题总结 我用localhost的root帐号不能连 最后请教DBA组新建用户搞定! 现弄些受权用户的资料 以备不时之需 授权表使用举例 grant用于给增加用户和创建权限,revoke ...

  8. mysql 授权sql_mysql授权GRANT ALL PRIVILEGES

    mysql授权GRANT ALL PRIVILEGES 方法/步骤 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql ...

  9. mysql revoke 授权,MySQL授权(grant)和撤销授权(revoke)的简单示例

    这篇文章主要为大家详细介绍了MySQL授权(grant)和撤销授权(revoke)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 创建 ...

最新文章

  1. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
  2. 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
  3. clickhouse集群表删除_携程用ClickHouse轻松玩转每天十亿级数据更新
  4. 开发过程中任何一个时刻,只关注解决当前面临的问题。
  5. 大鱼风控笔记 2:量化风控体系的实现要求
  6. 联想小新一键恢复小孔_联想机海真香预警!多款轻薄本平板来袭 学生/办公别错过...
  7. python excel处理模块_Python(00):openpyxl模块处理Excel文件
  8. Spring AOP的日志记录
  9. 活动目录的灾难恢复操作指导之一
  10. js扁平数组对象转成树结构
  11. donet 微服务开发 学习-consul 消费端开发
  12. Matlab 线性拟合 非线性拟合
  13. 数据库完整性详细解释
  14. 关于手写unshift方法
  15. 关于CC的完全非线性椭圆方程一书的一些小结
  16. linux限制指定ip禁止访问指定端口,linux设置iptables禁止某个IP访问
  17. 图像处理 - 打开图片
  18. windows管理右键新建的方法
  19. 计算机网络期末试题及答案
  20. 树莓派电信4G联网:树莓派3B+Quectel EC20

热门文章

  1. KVM中virtio实现(九)
  2. leetcode算法题--多边形三角剖分的最低得分★
  3. C#.NET 连接 Access操作类
  4. MyISAM与InnoDB的索引实现
  5. xtrabackup 安装、备份和恢复
  6. spring系统学习:20180611: Spring中AOP通知的类型
  7. 大数据征信需把控 数据源的“量”与“度”
  8. OPEN RESETLOGS 启动,报ORA-00392   ORA-00312错误
  9. 样条之连分式插值函数
  10. 卸载mysql 服务