MySQL学习——管理用户权限

database

MySQL学习——管理用户权限

摘要:本文主要学习了使用DCL语句管理用户权限的方法。

了解用户权限

什么是用户

用户,指的就是操作和使用MySQL数据库的人。使用MySQL数据库需要用户先通过用户名和密码进行连接,然后才能进行操作,不同的用户可以设置不同的权限,让某些用户只能操作权限范围内的数据,也可以让某些用户只能查询不能修改。

在MySQL数据库中,所有的用户信息都是保存在mysql数据库的user表中的。

查看user表

使用 descuser; 命令查看user表的结构:

 1 mysql>descuser;

2+------------------------+-----------------------------------+------+-----+-----------------------+-------+

3| Field | Type |Null|Key|Default| Extra |

4+------------------------+-----------------------------------+------+-----+-----------------------+-------+

5| Host |char(60) | NO | PRI |||

6|User|char(16) | NO | PRI |||

7| Password |char(41) | NO ||||

8| Select_priv | enum("N","Y") | NO || N ||

9| Insert_priv | enum("N","Y") | NO || N ||

10| Update_priv | enum("N","Y") | NO || N ||

11| Delete_priv | enum("N","Y") | NO || N ||

12| Create_priv | enum("N","Y") | NO || N ||

13| Drop_priv | enum("N","Y") | NO || N ||

14| Reload_priv | enum("N","Y") | NO || N ||

15| Shutdown_priv | enum("N","Y") | NO || N ||

16| Process_priv | enum("N","Y") | NO || N ||

17| File_priv | enum("N","Y") | NO || N ||

18| Grant_priv | enum("N","Y") | NO || N ||

19| References_priv | enum("N","Y") | NO || N ||

20| Index_priv | enum("N","Y") | NO || N ||

21| Alter_priv | enum("N","Y") | NO || N ||

22| Show_db_priv | enum("N","Y") | NO || N ||

23| Super_priv | enum("N","Y") | NO || N ||

24| Create_tmp_table_priv | enum("N","Y") | NO || N ||

25| Lock_tables_priv | enum("N","Y") | NO || N ||

26| Execute_priv | enum("N","Y") | NO || N ||

27| Repl_slave_priv | enum("N","Y") | NO || N ||

28| Repl_client_priv | enum("N","Y") | NO || N ||

29| Create_view_priv | enum("N","Y") | NO || N ||

30| Show_view_priv | enum("N","Y") | NO || N ||

31| Create_routine_priv | enum("N","Y") | NO || N ||

32| Alter_routine_priv | enum("N","Y") | NO || N ||

33| Create_user_priv | enum("N","Y") | NO || N ||

34| Event_priv | enum("N","Y") | NO || N ||

35| Trigger_priv | enum("N","Y") | NO || N ||

36| Create_tablespace_priv | enum("N","Y") | NO || N ||

37| ssl_type | enum("","ANY","X509","SPECIFIED") | NO ||||

38| ssl_cipher | blob | NO ||NULL||

39| x509_issuer | blob | NO ||NULL||

40| x509_subject | blob | NO ||NULL||

41| max_questions |int(11) unsigned | NO ||0||

42| max_updates |int(11) unsigned | NO ||0||

43| max_connections |int(11) unsigned | NO ||0||

44| max_user_connections |int(11) | NO ||0||

45| plugin |char(64) | YES || mysql_native_password ||

46| authentication_string |text| YES ||NULL||

47| password_expired | enum("N","Y") | NO || N ||

48+------------------------+-----------------------------------+------+-----+-----------------------+-------+

4943 rows inset (0.00 sec)

50

51 mysql>

在MySQL数据库中,对用户的管理是通过对应的Host和User共同组成的主键来区分的。

其中,User代表用户的用户名,Host代表允许访问的客户端(IP地址或者是主机地址),Host使用*表示所有的客户端都可以访问。

查询user表数据:

 1 mysql>select host, user, password fromuser;

2+-----------+------+----------------------+

3| host |user| password |

4+-----------+------+----------------------+

5| localhost | root |********************|

6|127.0.0.1| root |********************|

7| ::1| root |********************|

8+-----------+------+----------------------+

93 rows inset (0.00 sec)

10

11 mysql>

在安装MySQL数据库的时候,如果没有创建匿名用户,那么在user表里只有一个root用户。

创建用户

两种方式

创建用户的方式有两种,一种是使用DML语句直接向user表里插入数据,另一种是使用DDL语句创建用户。

如果使用DML语句直接向user表里插入数据,那么在插入Password字段时,需要先进行加密,保存加密后的密文。如果使用DDL语句创建用户,则不需要考虑加密的问题,语句会自动将密码进行加密。

语法

1createuser 用户名@主机地址 identified by 明文密码;

其中, @主机地址 可以省略,则表示任何客户端都可以使用这个用户访问数据库。 identified by 铭文密码 也可以省略,表示不需要密码就可以登录。

实例

1 mysql>createuser"abc" identified by"123456";

2 Query OK, 0 rows affected (0.00 sec)

3

4 mysql>

删除用户

两种方式

和创建用户相似,删除用户也有两种方式。

语法

使用DML语句删除:

1deletefromuserwhereuser=用户名 and host=主机地址;

使用DDL语句删除:

1dropuser 用户名@主机地址;

实例

使用DML语句删除:

1 mysql>deletefromuserwhereuser="abc" ;

2 Query OK, 1 row affected (0.00 sec)

3

4 mysql>

使用DDL语句删除:

1 mysql>dropuser"abc";

2 Query OK, 0 rows affected (0.00 sec)

3

4 mysql>

修改用户密码

两种方式

修改密码也有两种方式:

一种是使用 password() 方法加密后更新,5.6版本以及以前的版本需要使用这种方式。

一种是使用DCL语句进行更新,5.7版本以及之后的版本需要使用这种方式。

语法

使用DML语句修改,并用 password() 方法对密码加密:

1updateuserset password=password(明文密码) whereuser=用户名 and host=主机地址;

使用DCL语句修改:

1alteruser 用户名@主机地址 identified by 明文密码;

实例

使用DML语句修改,并用 password() 方法对密码加密:

1 mysql>updateuserset password=password("654321") whereuser="abc" ;

2 Query OK, 1 row affected (0.00 sec)

3 Rows matched: 1 Changed: 1 Warnings: 0

4

5 mysql>

使用DCL语句修改:

1 mysql>alteruser"abc" identified by"123123";

2 Query OK, 0 rows affected (0.00 sec)

3

4 mysql>

未完待续

以上是 MySQL学习——管理用户权限 的全部内容, 来源链接: utcz.com/z/531372.html

回到顶部