数据库服务器通常包含有重要的数据,这些数据的安全和完整可通过访问控制来维护。访问控制实际上就是为用户提供且仅提供他们所需的访问权。
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之访问控制与权限管理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)