关闭mysql权限管理_关于mysql学习之权限管理详解

本文详细介绍了MySQL数据库的权限系统,包括用户身份验证、存取权限控制和数据库管理的制度。重点阐述了MySQL如何通过user、db和tables_priv表进行权限检查,并提供了创建用户、授权、回收权限的示例。同时,强调了权限控制的重要性,以防止非授权访问,确保数据安全。
摘要由CSDN通过智能技术生成

数据库权限的意义:

为了保证数据库中的业务数据不被非授权的用户非法窃取,需要对数据库的访问者进行各种限制,而数据库安全性控制措施主要有这三种,第一种用户身份鉴别,手段可以是口令,磁卡,指纹等技术,只有拥有合法身份的人才可以进入数据库。第二种存取权限控制,不同角色,对数据库的存取权限是不同的,必须为每一个角色设置其访问的数据库对象、权限。第三种制定数据库管理的管理制度,制度最终约束人的行为,通过制定相应的规章制度,可以保证在合适的时间、由合适的人对数据进行合适的操作。

mysql对用户权限的检查分为两个阶段

1、是否可以与mysql服务器建立链接

2、是否具有某些操作权限(如:select update 等)

一、与mysql服务器建立链接

mysql服务器如何校验用户是否可以建立链接

1、验证你从哪来 host

2、你是谁 user

3、密码 password

链接mysql的方式:C:\Users\PC003>mysql -h192.168.6.223 -uroot -pjalja

参数解释:-h:从何处要建立链接

-u:user

-p:密码mysql> select user,host,password from user;

+------+-----------+-------------------------------------------+

| user | host | password |

+------+-----------+-------------------------------------------+

| root | localhost | *CFAFE434FB0E5D64538901E668E1EACD077A54DF |

| root | % | *CFAFE434FB0E5D64538901E668E1EACD077A54DF |

+------+-----------+-------------------------------------------+

host=localhost表示可以使用默认主机进行链接(C:\Users\PC003>mysql -uroot -pjalja,C:\Users\PC003>mysql -hlocalhost -uroot -pjalja,C:\Users\PC003>mysql -h127.0.0.1 -uroot -pjalja)

host=%表示该服务器可以与它所在一个局域网(公网)内的所有主机建立链接,该方式在生产环境中不安全

host=192.168.6.224表示该服务器只能与192.168.6.224主机建立链接 C:\Users\PC003>mysql -h192.168.6.223 -uroot -pjalja

如何修改host:mysql> update user set host='192.168.6.223' where user ='root'

mysql> flush privileges;刷新权限(因为修改后数据是在内存中每次操作用户权限相关操作都要进行刷新)

修改密码:mysql> update user set password=password('111111') where user='root';

mysql> flush privileges;

二、mysql如何进行权限检查

mysql中有一个mysql库该库下user表检查该用户是否存在,db表检查该用户对哪些库有哪些操作权限,tables_priv表检查该用户对那些表有哪些操作权限。

创建用户并授权:

grant [权限1,权限2] on *.* to user@'host' identfied by 'password';

常用权限:all,create,drop,insert,delete,update,select

例如:授予ls用户所有库所有表的所有权限并可以从该局域网该网段任何主机登陆。mysql> grant all on *.* to 'ls'@'192.168.6.%' identified by '111111';

使用该用户登陆:C:\Users\PC003>mysql -h192.168.6.223 -uls -p111111;

查看ls用户具体有哪些权限:mysql> select * from mysql.user where user='ls' \G;

*************************** 1. row ***************************

Host: 192.168.6.%

User: ls

Password: *FD571203974BA9AFE270FE62151AE967ECA5E0AA

Select_priv: Y

Insert_priv: Y

Update_priv: Y

Delete_priv: Y

Create_priv: Y

Drop_priv: Y

Reload_priv: Y

Shutdown_priv: Y

Process_priv: Y

File_priv: Y

Grant_priv: N

References_priv: Y

Index_priv: Y

Alter_priv: Y

Show_db_priv: Y

Super_priv: Y

Create_tmp_table_priv: Y

Lock_tables_priv: Y

Execute_priv: Y

Repl_slave_priv: Y

Repl_client_priv: Y

Create_view_priv: Y

Show_view_priv: Y

Create_routine_priv: Y

Alter_routine_priv: Y

Create_user_priv: Y

Event_priv: Y

Trigger_priv: Y

Create_tablespace_priv: Y

ssl_type:

ssl_cipher:

x509_issuer:

x509_subject:

max_questions: 0

max_updates: 0

max_connections: 0

max_user_connections: 0

plugin:

authentication_string: NULL

权限回收:收回ls的所有权限

mysql> revoke all on *.* from ls@'192.168.6.%';

授权某个库的权限:

mysql> grant all on blog.* to ls@'192.168.6.%';授予ls用户拥有blog数据库的所有权限。

这样ls用户在user表中没有权限,这时将进行db级别的权限检查mysql> select * from mysql.db where user='ls'

\G;*************************** 1. row ***************************

Host: 192.168.6.%

Db: blog

User: ls

Select_priv: Y

Insert_priv: Y

Update_priv: Y

Delete_priv: Y

Create_priv: Y

Drop_priv: Y

Grant_priv: N

References_priv: Y

Index_priv: Y

Alter_priv: Y

Create_tmp_table_priv: Y

Lock_tables_priv: Y

Create_view_priv: Y

Show_view_priv: Y

Create_routine_priv: Y

Alter_routine_priv: Y

Execute_priv: Y

Event_priv: Y

Trigger_priv: Y

回收ls用户所有权限并赋予某各表权限:授予ls用户blog库中user表crud权限mysql> revoke all on *.* from ls@'192.168.6.%';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> grant insert,update,select,delete on blog.user to ls@'192.168.6.%';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

这样ls用户在db级别中没有权限,这时将进行tables_priv级别的权限检查:mysql> select * from mysql.tables_priv where user='ls'

\G;*************************** 1. row ***************************

Host: 192.168.6.%

Db: blog

User: ls

Table_name: user

Grantor: root@localhost

Timestamp: 2017-02-09 14:35:38

Table_priv: Select,Insert,Update,DeleteColumn_priv:1 row in set (0.00 sec)

mysql权限控制流程:

44c3dec43fa58a8c74344696ed2153eb.png

注意:mysql的权限检查可以精确到某列数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值