前言
👏 作者简介:我是笑霸final,一名热爱技术的在校学生。
📝 个人主页:个人主页1 || 笑霸final的主页2 📕 系列专栏:数据库
📧 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥 如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏
🐉 欢迎访问我的个人博客 ====> 笑霸final的个人博客
🧙 gitee主页笑霸final | | github主页笑霸final

目录

  • 一、登录mysql
  • 二、创建用户
  • 三、修改用户
  • 四、 删除用户
  • 4.1方式一:使用DROP方式删除(推荐)
  • 方式2:使用DELETE方式删除
  • 五、设置密码
  • 5.1设置当前用户的密码
  • 5.1修改其它用户密码
  • 六、权限列表
  • 七、授予权限
  • 八收回权限

一、登录mysql

启动MySQL服务后,可以通过mysql命令来登录MySQL服务器,命令如下

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"

下面详细介绍命令中的参数:

  • -h参数 后面接主机名或者主机IP,hostname为主机,hostIP为主机IP。
  • -P参数 后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口是3306,
    不使用该参数时自动连接到3306端口,port为连接的端口号。
    * -u参数 后面接用户名,username为用户名
  • -p参数 会提示输入密码。
  • DatabaseName参数 指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库
    中,然后可以使用USE命令来选择数据库。
  • -e参数 后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL
    服务器。

二、创建用户

我们先登录root用户mysql -uroot -p查看用户

use mysql;
 
select host , user from user;

mysql用户管理与权限_数据库

创建用户语句的基本语法形式如下:

mysql用户管理与权限_mysql_02

CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];
  • 用户名参数表示新建用户的账户,由 用户(User) 和 主机名(Host) 构成;默认host是 %
  • “[ ]”表示可选,也就是说,可以指定用户登录时需要密码验证,也可以不指定密码验证,这样用户可以直接登录。不过,不指定密码的方式不安全,不推荐使用。如果指定密码值,这里需要使用IDENTIFIED BY指定明文密码值。
  • CREATE USER语句可以同时创建多个用户。

比如我创建用户名为final的用户

密码为123 默认host是 %

create user 'final' identified by '123';


create user 'final1'@'localhost' identified by '123';

mysql用户管理与权限_mysql_03

三、修改用户

用的UPDATE语句来修改

UPDATE mysql.user SET USER='新名称' WHERE USER='原来的名称';
FLUSH PRIVILEGES;  #刷新权限

实战

update user set user='xbfinal' where user='final1';

mysql用户管理与权限_mysql_04


四、 删除用户

4.1方式一:使用DROP方式删除(推荐)

基本语法形式如下:

DROP USER 用户名[,用户名]…;

用户名参数表示新建用户的账户,由 用户(User) 和 主机名(Host) 构成;
举例:

drop user xbfinal;# 默认删除host为%的用户
drop user 'xbfinal'@'localhost';

mysql用户管理与权限_MySQL_05

方式2:使用DELETE方式删除

DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;  

# 执行完DELETE命令后要使用FLUSH命令来使用户生效,命令如下:

FLUSH PRIVILEGES;

注意:不推荐通过 DELETE 进行删除,系统会有残留信息保留。而drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。


五、设置密码

5.1设置当前用户的密码

  1. 使用ALTER USER命令来修改当前用户密码 用户可以使用ALTER命令来修改自身密码,如下语句代表修改当前登录用户的密码。基本语法如下:
ALTER USER USER() IDENTIFIED BY 'new_password';

mysql用户管理与权限_数据库_06

  1. 使用SET语句来修改当前用户密码 使用root用户登录MySQL后,可以使用SET语句来修改密码,具体SQL语句如下:
SET PASSWORD='new_password';

这里就不演示了

5.1修改其它用户密码

修改其他用户的密码就需要很高的权限比如root用户

  1. 使用ALTER语句来修改普通用户的密码 可以使用ALTER USER语句来修改普通用户的密码。
    基本语法形式如下:
ALTER USER user [IDENTIFIED BY '新密码']
[,user[IDENTIFIED BY '新密码']]…;

实例

alter user xbfinal identified by '111';

mysql用户管理与权限_数据库_07


我们发现需要本地登录 我们用虚拟机试一试

mysql用户管理与权限_mysql_08


当然我们也能修改host实现远程登录

update user set host='%' where user='xbfinal';

mysql用户管理与权限_数据库_09


mysql用户管理与权限_MySQL_10

六、权限列表

查看所有权限

show privileges;

查看当前用户权限

SHOW GRANTS;
# 或
SHOW GRANTS FOR CURRENT_USER;
# 或
SHOW GRANTS FOR CURRENT_USER();

查看某用户的全局权限

SHOW GRANTS FOR 'user'@'主机地址' ;

常用的一些权限

1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。
2)SELECT、INSERT、UPDATE和DELETE权限 允许在一个数据库现有的表上实施操作。
(3) SELECT权限只有在它们真正从一个表中检索行时才被用到。
(4) INDEX权限 允许创建或删除索引,INDEX适用于已有的表。如果具有某个表的CREATE权限,就可以在CREATE TABLE语句中包括索引定义。 (
(5) ALTER权限 可以使用ALTER TABLE来更改表的结构和重新命名表。
(6) CREATE ROUTINE权限 用来创建保存的
程序(函数和程序),ALTER ROUTINE权限用来更改和删除保存的程序, EXECUTE权限 用来执行保存的
程序。
(7) GRANT权限 允许授权给其他用户,可用于数据库、表和保存的程序。 (8) FILE权限 使用户可以使用LOAD DATA INFILE和SELECT … INTO OUTFILE语句读或写服务器上的文件,任何被授予FILE权限的用户都能读或写MySQL服务器上的任何文件(说明用户可以读任何数据库目录下的文件,因为服务器可以访问这些文件)。

七、授予权限

给用户授权的方式有 2 种,分别是通过把 角色赋予用户给用户授权直接给用户授权 。用户是数据库的使用者,我们可以通过给用户授予访问数据库中资源的权限,来控制使用者对数据库的访问,消除安全隐患。

GRANT 权限1,权限2,…权限n 
	ON 数据库名称.表名称 
	TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];

实列
给li4用户用本地命令行方式,授予textdb这个库下的所有表的插删改查的权限

GRANT SELECT,INSERT,DELETE,UPDATE 
	ON textdb.* 
	TO li4@localhost ;

授予通过网络方式登录的final用户 ,对所有库所有表的全部权限,密码设为111。注意这里唯独不包括grant的权限

GRANT ALL PRIVILEGES 
	ON *.* 
	TO final@'%' IDENTIFIED BY '123';

八收回权限

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。

MySQL中使用 REVOKE语句 取消用户的某些权限。使用REVOKE收回权限之后,用户账户的记录将从db、host、tables_priv和columns_priv表中删除,但是用户账户记录仍然在user表中保存(删除user表中的账户记录使用DROP USER语句)

收回权限命令

REVOKE 权限1,权限2,…权限n 
	ON 数据库名称.表名称 
	FROM 用户名@用户地址;

举例

#收回全库全表的所有权限
REVOKE ALL PRIVILEGES 
	ON *.* 
	FROM joe@'%';
#收回mysql库下的所有表的插删改查权限
REVOKE SELECT,INSERT,UPDATE,DELETE 
	ON mysql.* 
	FROM joe@localhost;