MySQL用户管理和授权

用户管理和授权是属于MySQL当中的DCL语句

创建用户以及一些相关操作

明文创建用户

create user 'zzr'@'localhost' IDENTIFIED by '123456';

create user  这是创建用户的开头

zzr表示用户名
localhost:新建的用户可以在哪些主机上登录。即可以使用IP地址,网段,主机名都可以

IDENTIFIED by '123456';  新建用户的密码

我们可以通过IP地址网段主机名进行创建,这些都是对'location'的操作

'zzr'@'localhost'
'zzr'@'192.168.233.0/24'
'zzr'@'192.168.233.22'
'zzr'@'%'

其中  %代表正则任意

加密密码创建用户 :

 SELECT PASSWORD('密码');    #先获取加密的密码
 ​
 CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '加密的密码';

登录用户用户名的更改 

 RENAME USER '旧的用户名'@'旧的主机地址' TO '新的用户名'@'新的主机地址';

rename user 'test1'@'20.0.0.100' to 'zzr'@'20.0.0.100';

重命名之后,原本的test1不会保留,新的直接覆盖

删除用户

drop user '用户名'@'登录地址';

drop user 'zzr'@'localhost';

修改用户密码

set password = password('abc123');

给其他用户设置密码:

set password for 'zzr'@'20.0.0.100' = password('123123');

注意:终端没有修改密码的权限,所以得去命令行进行修改密码操作

root用户是超级管理员,它不仅可以修改自身密码,还能修改其他用户的密码。 

root密码的忘记后的修改找回方法 

 该操作必须是在数据库本机且为root用户,才可进行

vim  /etc/my.cnf
 
skip-grant-tables

MySQL用户管理和授权_第1张图片

然后重启数据库即可

systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

用户的相关权限

权限    权限说明 权限级别
CREATE 创建数据库、表或索引的权限   数据库、表或索引
DROP    删除数据库或表的权限 数据库或表
GRANT OPTION   赋予权限选项  数据库或表
REFERENCES  引用权限 数据库或表
ALTER   更改表的权限 数据表
DELETE  删除表数据的权限  数据表
INDEX 操作索引的权限 数据表
INSERT   添加表数据的权限 数据表
UPDATE  更新表数据的权限  数据表
CREATE VIEW  创建视图的权限 视图
SHOW VIEW 查看视图的权限 视图
ALTER ROUTINE  更改存储过程的权限 存储过程

如何给用户赋权

grant all privileges on *.* to 'hj'@'localhost' IDENTIFIED by '123456';

grant 赋权的开头语句

all PRIVILEGES 赋予所有权限

on *.* 所有库

on *.* 所有库都有操作权限

on hj.*  只能对指定(hj)库进行操作

to 'hj'@'localhost' 赋权给哪个用户,要和创建用户赋权格式一致。

IDENTIFIED by '123456' 使用哪个密码进行登录。创建用户时候可以省略
show grants for 'hj'@'localhost';

查看权限



flush privileges;    权限刷新

如何查看指定用户权限

show grant for '用户名'@'来源地址';

show grant for 'hj'@'20.0.0.100';

MySQL用户管理和授权_第2张图片

如何对权限进行控制

给用户加上权限:

grant select on 库名.* to '用户名'@'来源地址' idevtified by '密码';


grant select on test.* to 'test1'@'20.0.0.100' idevtified by '123456';

flush privileges;

如何给一个用户赋予多个权限

grant select,insert,drop on hj.* to  'test1'@'20.0.0.100'  identified by '123456';

MySQL用户管理和授权_第3张图片

如何给用户撤销权限

revoke select on hj.* from 'test1'@'20.0.0.100';

MySQL用户管理和授权_第4张图片

练习

1.创建用户,声明网段 test 网段任选

MySQL用户管理和授权_第5张图片

create user 'test'@'20.0.0.0/24' IDENTIFIED by '123123'

2.创建一个库,库名:test1

3.库中创建两个表分别叫做

table1

id 主键

name 不为空

sex 不为空

CREATE TABLE table1 (
id int(4) PRIMARY KEY,
name_id int(4) NOT NULL,
sex int(4) not null
)

table2

id 主键

address 可以为空 默认-----地址不详

phone 可以为空,不能重复

CREATE TABLE table2 (
id int(4) PRIMARY KEY,
address varchar(50) default '地址不详',
phone varchar(12) UNIQUE
)

3.test可以对test1 的库 进行select insert

GRANT SELECT,INSERT on test1.* to 'test'@'20.0.0.0/24' IDENTIFIED by '123123';
//终端没有权限,所以得去root的命令行执行

MySQL用户管理和授权_第6张图片

4.把test的用户名改成test_123,密码改成abc123

set passwd for 'test'@'20.0.0.%' = password('abc123');
%为正则任意,来代表网段

MySQL用户管理和授权_第7张图片

5.删除权限:insert删去

MySQL用户管理和授权_第8张图片

总结

1.用户管理操作

create user 'username'@'address' identified by 'password';   #创建用户  ​

 select user,host,authentication_string from mysql.user;   #查看用户信息  ​

 rename user old_user to new_user;        #修改用户名  ​

 drop user '用户名'@'来源地址';            #删除用户  ​  

set password = password('XXXX');         #修改当前登录用户的密码  ​

 set password for '用户名'@'来源地址' = password('XXXX');     #修改其他用户的密码  ​

 select user ();      #查看当前登录用户和来源地址  ​

忘记root用户密码的解决方法:  

修改mysql配置文件/etc/my.cnf,在 [mysqld] 配置项下加入 skip-grant-tables

service mysqld restart   #重启服务

 update mysql.user set authentication_string=password('新密码') where user='root';  

#修改密码 flush privileges; #刷新数据库

2.用户授权操作 

grant 权限列表/ALL ON 库名.表名 to 'username'@'address' identified by '密码';  ​   #授予用户权限  show grants;     #查看当前用户(自己)的权限                

show grants for 'username'@'address';      #查看其他用户的权限  ​

 revoke 权限列表/ALL on 库名.表名 from 'username'@'address';   #撤销用户的权限  ​  


 

你可能感兴趣的:(mysql,数据库)