MySQL数据库用户管理与用户授权

  • A+
所属分类:安全闲碎

mysql 数据库用户管理与授权

一 : mysql 用户管理与恢复root 密码[1]

1 新建用户[2]2 查看用户信息与显示登录用户[3]3 重命名用户[4]4 删除用户[5]5 修改密码[6]6 恢复root 密码[7]

6.1 修改配置文件,设置跳过密码项[8]6.2 重启mysql 服务,匿名进入mysql ,修改root 密码[9]6.3 删除配置文件中跳过授权表设置, 重启服务,使用root 用户登录数据库[10]

二:mysql 授权管理[11]

1 授予权限[12]

1.1 普通授权[13]1.2 让被授权的用户可以将权限授予他人[14]

2 查看用户权限[15]3 撤销用户权限[16]

一 : mysql 用户管理与恢复root 密码

1 新建用户

create user '用户名'@‘登录地址' [ identitified by '密码' ];

select password('密码');

create user ’用户名'@‘登录地址’ identified by '加密密文';

用户名:指定将创建的用户名

登录地址:==指新创建的用户可以从哪里登录数据库。可以适应 ip 地址,网段,主机名,本地用户为localhost,任意主机都可以登录为’%‘==

密码:

(1)若使用明文面,则直接输入。如果要使用加密密码则下使用select password('密码') ;获取密文,再在语句中添加password '密文';

(2) 如果省略 'identified by' 部分,则用户的密码将为空

#显示当前登录用户与登录地点

select user();

#明文创建本地登录用户test ,并设置密码abc123

create user 'test'@'localhost' identified by 'abc123';

#密文创建用户

#先查看密码 abc123 的加密密码

select password('abc123');

#在使用加密后的密码,创建本地登录用户test2

create user 'test2'@'localhost' identified by password '*6691484EA6B50DDDE1926A220DA01FA9E575C18A';

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

2 查看用户信息与显示登录用户

select * from mysql.user G

select User,Host,authentication_string from mysql.user;

mysql 数据库用户信息保存在==mysql 库 的user表中==,包括了用户名,用户登录地点,用户权限,用户密码加密密文等。==其中 User 项保存了用户名,Host 项保存了用户登录地点,autentication_string 保存了用户密码加密密文==

select user,host,authentication_string from mysql.user;

MySQL数据库用户管理与用户授权

3 重命名用户

rename user '用户名'@‘登录地点’ to '新用户名'@'新登录地点';

'用户名'@'登录地点' 必须是存在的。

#将本地登录的用户test2 该文任意地点都可以登录的用户test 

rename user 'test2'@'localhost' to 'test'@'%';

MySQL数据库用户管理与用户授权

4 删除用户

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

删除用户必须要有管理员权限才可以。

如果不加 @'客户端登录地址', 相当于删除 '用户名'@'%'

并且,用户名和登录地址要对应

#删除任意主机登录的用户 ’test‘@'%'.相当于 drop user t 'test'@'%'

drop user 'test';

#删除本地登录的用户test

drop user 'test'@'localhost' ;

MySQL数据库用户管理与用户授权

5 修改密码

1.修改当前用户密码

set password=password('新密码');

1.root 用户修改其他用户密码

set password for '用户名'@'登录地点'=password('密码');

1.通过修改mysql.user 表 修改用户密码

update mysql.user set authentication_string=password('新密码') where 条件表达式;

#设置当前登录用户密码为 123456

set password=password('123456');

#设置本地登录的root 用户密码为 abc123

set password for 'root'@'localhost'=password('abc123');

#修改mysql.user 表的 user字段值为 'user2' 的表记录,将它的authentication_string 字段值改为加密后的123456

#也就是修改 所有 用户名为 user2 的用户的密码为123456

update mysql.user set authentication_string=password('123456') where user='user2';

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

6 恢复root 密码

我们可以通过配置文件中==myseld 设置==的 ==skip-grant-table'项来跳过授权表==,匿名登录。然后==修改 mysql 库user表中root 的authentication 字段==,来修改root密码。

6.1 修改配置文件,设置跳过密码项

vim /etc/my.conf 

[mysqld] 

skip-grant-tables #在[mysqd] 项中添加 skip-grant-table 跳过授表

MySQL数据库用户管理与用户授权

6.2 重启 mysql 服务,匿名进入 mysql ,修改 root 密码

systemctl restart mysqld #重启mysql的服务

mysql #匿名进入mysql

# 通过修改 mysql.usr 的authentication_string 字段,来修改 'root'@'locathost' 用户的密码

update mysql.user set authentication_string=password('abc123') where user='root' and host='localhost';

#刷新授权表

flush privileges;

#退出匿名登录

exit

MySQL数据库用户管理与用户授权

6.3 删除配置文件中跳过授权表设置, 重启服务,使用 root 用户登录数据库

vim /etc/my.cnf

[mysqld]

#将 skip-grant-tables 删除

#skip-grant-tables

#重启mysqld 服务

systemctl restart mysqld

#使用root 登录进入数据库

mysql -uroot -pabc123

#查看当前登录用户与登录地址

select user();

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

二:mysql 授权管理

==我们使用create user 创建的用户,只能登录进入数据库,但是无法做任何事情。==

==所以还需要grant 命令进行 用户授权。同时,此命令,如果当用户不存在,也可以创建该用户。==

1 授予权限

grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by ‘密码’ with grant option;

权限列表:多个权限用逗号‘,’ 隔开,如 'select,update' 。==all 表示所有权限==

数据库名.表名:用于指定授权操作的数据库名和表名,==可以使用通配符' *' 表示所有。如 *.* 表示所有库,所有表==

'用户名'@'来源地址' : 用户指定用户名和可以登录的客户端地址。==可以使用百分号 % 来表示某个区域的所有地址。== 'root'@'%' 表示任意主机都可以登录, 'root'@'192.168.23.%' 表示192.168.23.0 整个网段。'root'@'%.mynet.com' 表示所有以.mynet.com 结尾的主机

identified by :用于设置用户连数据库时候的密码。在新建用户时,如果省略此部分,则用户密码为空。但是我们在配置文件中设置了'NO_AUTO_CREATE_USER'项,所以是无法创建空密码用户

with grant option :==让被授权的用户,可以将相同的权限授权给他人。==

其他事项:==grant 授权或者 revoke 撤销权限后,需要用户重新连接mysql 数据库,或者刷新授权表==

1.1 普通授权

#授权 school库 的所有表的select权限给用户 test,登录密码是abc123,只能本地登录

grant select on school.* to 'test'@'localhost' identified by 'abc123';

exit #退出数据库

#使用用户 test ,密码abc123 本地登录mysql

mysql -utest -pabc123

#查看数据库

show databases;

#切换到 school库

use school

#尝试向表中插入数据,结果为权限被拒绝

insert into class1 value(10,'test',1010110);

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

1.2 让被授权的用户可以将权限授予他人

注意,当被授权用户将权限授予他人时候,涉及到的权限,库,表,必须是本身拥有的权限。否则报错。

比如,当本身没有mysql 库的权限时,就不可以在授权给其他用户时加上密码。

#将school库的所有表的select,insert,update,delete 权限授权给使用密码 abc123本地登录的用户test,并且,该用户可以将这些权限授权给其他用户

grant select,insert,update,delete on school.* to 'lisi'@'localhost'

-> identified by 'abc123' with grant option;

#刷新授权表

flush privileges;

exit

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

#当将权限授权于给一个不存在的用于时,则报错,不可以使用grant 命令创建用户

grant select,update,insert,delete on school.* to 'wangwu'@'localhost' identified by 'abc123';

#当授权个一个存在的用户,但是后面跟了 identified by 项时,则报错,不可以对mysql 库操作。因为用户密码是保存在 mysql 库中,而当前用户没有mysql 库的权限,所以报错。

#可以授权时候,后面不跟密码,或者将mysql 库user表的相应权限授权给 当前用户

grant select,update,insert,delete on school.* to 'test'@'localhost' identified by 'abc123';

#当直接授权给存在的用户'test'@'localhost'时,则成功。

grant select,update,insert,delete on school.* to 'test'@'localhost' ;

MySQL数据库用户管理与用户授权

#使用test 用户本地登录

mysql -utest -pabc123

use school;

#本来没有insert 权限的test用户,现在可以对class1 表进行增删改查操作

insert into class1 values(13,'test',13131113);

MySQL数据库用户管理与用户授权

2 查看用户权限

用户显示自身的访问权限

show grants;

管理员查看已拥有授权用户权限

show grants for '用户名'@'登录地点'


#显示当前登录用户的权限

show grants;

#显示'test'@'localhost' 用户的权限

show grants for 'test'@'localhost';


MySQL数据库用户管理与用户授权

3 撤销用户权限

revoke 权限 on 库名.表名 from '用户名'@'登录地点' ;

权限,库名.表名, '用户名'@'登录地点' 必须与授权表里对应

all 表示所有权限

revoke select on school.* from 'test'@'localhost'; 

revoke all on school.* from 'test'@'localhost';

MySQL数据库用户管理与用户授权

MySQL数据库用户管理与用户授权

来源:www.cnblogs.com/zhijiyiyu/p/15205360.html


扫描二维码

获取更多精彩

保密基

MySQL数据库用户管理与用户授权


END

点个赞👍,点个在看吧!MySQL数据库用户管理与用户授权


本文始发于微信公众号(保密基):MySQL数据库用户管理与用户授权

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: