0
点赞
收藏
分享

微信扫一扫

使用webpack + TS + Babel

烟中雯城 2024-08-22 阅读 24

目录

一、MySQL权限表

1.MySQL权限系统的工作原理

2.权限表

二、账号管理

1.创建账号

2.删除账号

3.root用户修改自身密码

4.root用户修改普通用户密码

5.root用户密码丢失的解决方法

三、MySQL权限管理

1.查看账号权限

2.给账号授权

3.收回权限


一、MySQL权限表

1.MySQL权限系统的工作原理

MySQL权限表的验证过程为:


2.权限表

如果要查看user表中的字段,可以像查看欧通表那样使用SELECT语句:

user表是MySQL中最重要的权限表,用于记录允许连接到服务器的账号信息。其中的权限是全局级的,如果用户在该表中被授予了DELETE权限,则该用户可以删除MySQL服务器上所有数据库中的任何记录。

user表中的列可以分为4部分:用户列、权限列、安全列和资源控制列,通常使用最多的是用户列和权限列。


1.用户列


2.权限列


3.安全列


4.资源控制列

注:MySQL5.7还新增了4个字段,分别用于控制密码失效、最后一次i修改时间、失效时间,及账户锁定。


二、账号管理

1.创建账号


1.使用GRANT语句创建新用户

使用GRANT语句不仅可以创建新用户,还可以在创建的同时对用户授权。另外,使用GRANT语句还可以指定账户的其他特点,如使用安全连接、限制使用服务器资源等。

需要注意的是,使用GRANT语句创建新用户时必须有GRANT权限。

GRANT语句的基本语法格式如下:

其中,priv_type表示赋予用户的权限类型,比如SELECT,UPDATE等,all privileges为所有权限;db.table表示用户的权限所作用的数据库或数据库中的表,*.*表示所有数据库;user表示用户名;host表示主机名,其中%匹配任何主机名;IDENTIFIED BY关键字用于设置密码;password表示用户密码;[WITH with_option [with_option]...]为可选参数,表示对新创建的用户赋予GRANT权限,即该用户可以对其他用户赋予权限。


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

要使用CREATE USER语句创建用户,必须有全局的CREATE USER权限,或MySQL数据库的INSERT权限。每添加一个用户,CREATE USER语句会在mysql.user表中添加一条新纪录。CREATE USER语句的基本语法格式如下:

使用CREATE USER语句创建的用户没有任何权限,还需要使用GRANT语句赋予其权限。


2.删除账号

在MySQL中,可以使用DROP USER语句删除用户。其基本语法格式如下:

DROP USER语句可以一次删除一个或多个用户。要使用该语句,必须拥有MySQL数据库的全局CREATE USER权限或DELETE权限。


3.root用户修改自身密码

1.修改MySQL数据库的user表

由于所有账号信息都保存在user表中,因此可以通过修改user表中的密码字段值来改变root用户的密码。使用root用户登录MySQL服务器后,可以执行以下UPDATE语句修改其登录密码:

然后使用FLUSH PRIVILGES;语句,重新加载用户权限。


2.使用mysqladmin命令修改密码

使用mysqladmin命令修改root用户密码的基本语法形式如下:

username为要修改密码的用户名,此处指定为root用户;参数-h指定要修改的服务器地址,可以不屑,默认为localhost;-p表示输入当前密码;password为关键字,后面双引号中的内容newpwd为要设置的新密码。


3.使用SET语句修改root用户密码

使用SET语句可以重新设置自身或其他用户的登录密码。修改自身登录密码的语法结构如下:

新密码必须使用PASSWORD()函数加密。


4.root用户修改普通用户密码

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

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

如果是普通用户修改自身密码,则可以省略FOR子句:


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

在使用root用户登录MySQL服务器后,可以通过之心UPDATE语句修改mysql数据库中user表的authentication_string字段值,来修改普通用户的密码。使用UPDATE语句修改普通用户密码的基本语法格式如下:

PASSWORD()函数用户加密用户数据。执行该语句后需要执行FLUSH PRIVILEGES;语句刷新权限,重新加载权限表。


3.使用GRANT语句修改普通用户密码

只有拥有GRANT权限,才能使用GRANT语句修改密码。使用GRANT语句修改普通用户密码的基本语法格式如下:

注:在使用GRANT语句或mysqladimn命令修改用户密码时,密码均会自动加密,不需要使用PASSWORD()函数。


5.root用户密码丢失的解决方法


三、MySQL权限管理

1.查看账号权限

创建好账号后,可以使用SHOW GRANTS语句查看账号的权限信息,其基本语法格式如下:

其中user表示登录用户名,host表示登录的主机名或IP地址。在使用该语句时,指定的用户名和主机名都要用单引号引起来,并且在两个名字中间使用@符号连接。

GRANT可以显示全局级和非全局级权限的详细信息,如果表或列层级的权限被授予用户,它们也能在结果中显示。

除上述方法外,也可以使用SELECT语句查看权限表中各权限字段值来确定用户的权限信息,其基本语法格式如下:

其中privileges_list为想要查看的权限字段,可以为select_priv,insert_priv等,各字段之间使用逗号隔开。


2.给账号授权

给账户授权就是将某个权限授予某个用户。合理的权限可以保证数据库的安全。在MySQL中使用GRANT语句为账户授权,其基本语法格式如下:

同创建账号时一样,priv_type表示赋予用户的权限类型,比如SELECT,UPDATE等;db.table表示用户的权限所作用的数据库中的表,*.*表示所有数据库的所有表;user表示用户名;host表示主机名;[WITH with_option [with_option]...]为可选参数,除了可以对新创建的用户赋予GRANT权限外,其可取值还有4个,用户账号资源限制,各值及其意义分别如下:


3.收回权限

收回权限就是取消用户已有的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全。MySQL中使用REVOKE语句取消用户权限。取消用户权限后,用户账号的记录将从db,tables_priv和columns_priv表中删除,但是用户账号记录依然保存在user表中(可以使用DROP USER语句删除user表中的账号记录)。

REVOKE语句的基本语法格式如下:

该语句收回指定的权限,其中priv_type参数表示权限类型;db.table表示从哪个数据库哪个表上收回权限;‘user’@’host’表示用户账户,由用户名和主机名构成。

一般将在用户从user表中彻底删除之前,应该收回其所有权限,包括全局层级、数据库层级、表层级和列层级的权限。使用REVOKE语句收回用户所有权限的基本语法格式如下:

使用REVOKE语句,必须拥有MySQL数据库的全局CREATE权限或UPDATE权限。

举报

相关推荐

0 条评论