0
点赞
收藏
分享

微信扫一扫

【MySQL】mysql8的权限管理

芝婵 2022-03-30 阅读 65
mysql

权限管理

1. 查看用户

select * from mysql.user;

  • 进入 mysql数据库的user表,查看有什么用户。user 用户名;host 可登录的ip地址,%为不指定;plugin 字段为密码加密方式。mysql8较旧版更新了密码加密方式。旧版本mysql_native_password,新版本caching_sha2_password(默认)。
  • user表host,user双主键,相关操作都需要user和host。

2. 创建用户

CREATE USER 'username'@'host' IDENTIFIED with mysql_native_password BY 'password';

  • username:要创建用户的名字。
  • host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’。
  • by ‘password’:新创建用户的登陆数据库密码,如果没密码可以不写。
  • with mysql_native_password 或者with caching_sha2_password :指定密码加密方式,可不填,默认caching_sha2_password。
#表示创建的新用户,名为test,这个新用户密码为123456,只允许本机登陆,加密方式caching_sha2_password
CREATE USER  'test'@'localhost' IDENTIFIED BY '123456'; 
#表示新创建的用户,名为test,这个用户密码为123456,可以从其他电脑远程登陆mysql所在服务器, 加密方式mysql_native_password 
CREATE USER  'test'@'%' IDENTIFIED with mysql_native_password BY '123456';
//表示新创建的用户test,没有密码
CREATE USER  'test'@'%' ;

新建用户没有权限,因为还要为用户授予权限。

3.授权用户

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION

  • privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL
  • databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 .,*是一个通配符,表示全部。
  • ‘username’@‘host’:表示授权给哪个用户。
  • WITH GRANT OPTION :用户能够给其他用户授权(慎用)
#表示给用户test授权,让test能给datatest中的march表 实行 insert 和 select。
GRANT  selectinsert  ON  datatest.march TO 'test'@'%';    
#表示给用户test授权,让test能给所有库所有表实行所有的权力。     
GRANT  ALL  ON  *.*  TO  'test'@'%';
#注意:用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上  WITH GRANT OPTION
 GRANT  ALL  ON   *.*   TO  'test'@'%'  WITH GRANT OPTION;

4.设置加密规则与更改用户密码

ALTER USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password' ;

#修改test加密规则为mysql_native_password,密码为123456;
ALTER USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY'123456';
#修改test密码为123456; 
ALTER USER 'test'@'%' IDENTIFIED  BY'123456' ; 

5.撤销用户权限:

REVOKE privileges ON database.tablename FROM 'username'@'host';
赋权及撤销对应的库、表应该是一致的!!!

# 撤销test的插入权限
REVOKE insert ON  *.*  FROM 'test'@'%';
# 撤销test的查询权限
REVOKE  select  ON   datatest.march  FROM 'test'@'%';

注意:
若授予权利是这样写:GRANT select ON *.*TO 'test'@'%';
则用 REVOKE select ON datatest.march FROM 'test'@'%';是不能撤销用户test对 datatest.march中的select 权利的。
反过来GRANT select ON datatest.march TO 'test'@'%';授予权力
REVOKE select ON *.* FROM 'test'@'%';也是不能用来撤销用户test对datatest库的march表的SELECT 权利的

6.删除用户

DROP USER 'username'@'host'
删除用户。

#表示删除用户test;
DROP  USER 'test'@'%'

7.刷新权限

flush privileges; 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。

MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

举报

相关推荐

mysql8 2003

安装mysql8

重启mysql8

mysql8 gcc

MySQL8账号密码和权限的常用操作

CentOS安装MySQL8

mysql8查看锁

0 条评论