Mysql之访问控制与权限管理

Mysql之访问控制与权限管理,第1张

概述一、访问控制数据库服务器通常包含有重要的数据,这些数据的安全和完整可通过访问控制来维护。访问控制实际上就是为用户提供且仅提供他们所需的访问权。 mysql的用户账号及相关信息存储在名为mysql的数据库(系统)中,其中的user表包含了所有用户的账号,user表中的user列存储用户的登录 名。可以使用下面的sql语句查看数据库的使用者账号:select user from mysql.user; 一、访问控制

数据库服务器通常包含有重要的数据,这些数据的安全和完整可通过访问控制来维护。访问控制实际上就是为用户提供且仅提供他们所需的访问权。
MysqL的用户账号及相关信息存储在名为MysqL的数据库(系统)中,其中的user表包含了所有用户的账号,user表中的user列存储用户的登录 名。可以使用下面的SQL语句查看数据库的使用者账号:

select user from MysqL.user;

创建用户账号

成功安装了MysqL服务器后,系统会创建一个名为root的用户,root用户拥有对整个MysqL服务器完全控制的权限。为了避免恶意用户冒名使用root账号 *** 控数据库,通常需要创建一系列具备适当权限的账号,而尽可能地不用或少用root账号登录系统,以此来确保数据的安全访问。
创建用户名为zhangsan的新用户,口令为明文123:

create user'zhangsan'@'localhost'IDentifIEd by'123';


如果想对明文123进行加密可以使用password()函数,它加密后返回的是散列值:

select password(123);

则此时的创建新用户的语句就为:

create user 'zhangsan'@'localhost'IDentifIEd by password'上面通过password()函数加密的散列值';
删除用户

注意必须明确给出该账号的主机名

drop user zhangsan@localhost;
修改用户账号
rename user'zhangsan'@'localhost'to'lisi'@'localhost';
修改用户口令(密码)

新口令必须传递到password()中进行加密,或者是已经加密过的口令值(此时要加上引号)。
将用户zhangsan的口令修改成明文“hello”对应的散列值:

set password for 'zhangsan'@'localhost'=password('hello');
二、账户权限管理

新创建的用户账号没有访问权限,只有登录到MysqL服务器,不能执行任何数据库 *** 作,我们可以用下面的SQL语句查看新创建的用户zhangsan的权限:

show grants for 'zhangsan'@'localhost';


根据输出结果,可以看到用户zhangsan仅有一个权限usage on 星号.星号,表示该用户对任何数据库和任何表都没有权限。
所以需要为该用户分配适当的访问权限。

权限的授予

权限的授予通过grant语句实现。下面是一些实例:

grant select(cust_ID,cust_name)    on MysqL_test.customers    to'zhangsan'@'localhost';--授予在数据库MysqL_test的表customers上拥有对列cust_ID和列cust_name的select权限
grant select,update    on MysqL_test.customers    to 'liming'@'localhost'IDentifIEd by'123';--新建一个用户为liming,并授予其在数据库MysqL_test的表customers上拥有select和update的权限
grant all    on MysqL_test.*    to'zhangsan'@'localhost';--授予可以在数据库MysqL_test中执行所有 *** 作的权限
grant create user    on *.*    to'zhangsan'@'localhost';--授予系统中已存在用户zhangsan拥有创建用户的权限
权限的转移与限制

授予当前系统中一个不存在的用户zhou在数据库MysqL_test的表customers上拥有select 和update 的权限,并允许其将自身的这个权限授予其他用户(通过with grant option):

grant select,update    on MysqL_test.customers    to'zhou'@'localhost'IDentifIEd by'123'    with grant option;

如果上面with子句后面跟的是max_querIEs_per_hour count、
max_updates_per_hour count、
max_connections_per_hour count、
max_user_connections count
中的某一项,则该grant语句可用于限制权限

grant delete    on MysqL_test.customers    to 'zhangsan'@'localhost'    with max_querIEs_per_hour 1;--每小时只能处理一条delete语句的权限
权限的撤销

使用revoke可以实现权限的撤销,而不会删除用户

revoke select     on MysqL_test.customers    from'zhangsan'@'localhost';--回收用户zhangsan在数据库MysqL_test的表customers上的select权限
完结 总结

以上是内存溢出为你收集整理的Mysql之访问控制与权限管理全部内容,希望文章能够帮你解决Mysql之访问控制与权限管理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存