欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

MySQL 用户与授权管理详解

程序员文章站 2022-05-09 14:19:19
...

做为Mysql数据库管理员管理用户账户,是一件很重要的事,指出哪个用户可以连接服务器,从哪里连接,连接后能做什么。Mysql从3.22

大纲

一、前言

二、创建用户并授权

三、GRANT语句的种类

四、撤权并删除用户

推荐阅读:

MySQL用户管理

MySQL用户工具

一、前言

做为Mysql数据库管理员管理用户账户,是一件很重要的事,指出哪个用户可以连接服务器,从哪里连接,连接后能做什么。Mysql从3.22.11开始引入两个语句来做这件事,GRANT语句创建Mysql用户并指定其权限,而REVOKE语句删除权限。CREATE和REVOKE语句影响4个表,

  • user 能连接服务器的用户以及他们拥有的任何全局权限

  • db 数据库级权限

  • tables_priv 表级权限

  • columns_priv 列级权限

  • 还有第5个授权表host,但它不受GRANT和REVOKE的影响,下面我们看一下mysql数据库中的所有表,

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    mysql> use mysql;

    Database changed

    mysql> show tables;

    +---------------------------+

    | Tables_in_mysql |

    +---------------------------+

    | columns_priv |

    | db |

    | event |

    | func |

    | general_log |

    | help_category |

    | help_keyword |

    | help_relation |

    | help_topic |

    | host |

    | ndb_binlog_index |

    | plugin |

    | proc |

    | procs_priv |

    | proxies_priv |

    | servers |

    | slow_log |

    | tables_priv |

    | time_zone |

    | time_zone_leap_second |

    | time_zone_name |

    | time_zone_transition |

    | time_zone_transition_type |

    | user |

    +---------------------------+

    24 rows in set (0.00 sec)

    当你对一个用户发出一条GRANT语句时,在user表中为该用户创建一条记录。如果语句指定任何全局权限(管理权限或适用于所有数据库的权限),这些也记录在user表中。如果你指定数据库、表和列级权限,他们被分别记录在db、tables_priv和columns_priv表中。

    二、创建用户并授权

    1.GRANT 语句的用法

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    mysql> ? grant

    Name: 'GRANT'

    Description:

    Syntax:

    GRANT

    priv_type [(column_list)]

    [, priv_type [(column_list)]] ...

    ON [object_type] priv_level

    TO user_specification [, user_specification] ...

    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]

    [WITH with_option ...]

    GRANT语句的语法看上去像这样,