MySQL 管理用户

MySQL用户账号和信息存储在名为mysql的MySQL数据库中。一般不需要直接访问mysql数据库和表,但有时需要直接访问。需要直接访问它的时机之一是在需要获得所有用户账号列表时。为此,可使用以下代码:

use mysql;
select user from user;


创建用户账户

CREATE USER ben IDENTIFIED BY 'p@$$w0rd';

指定散列口令 IDENTIFIED BY指定的口令为纯文本,MySQL 将在保存到user表之前对其进行加密。为了作为散列值指定口令,使用IDENTIFIED BY PASSWORD。


重新命名一个用户账号

RENAME USER ben TO xiaomei;


删除用户账号

DROP USER xiaomei;


更改用户密码

SET PASSWORD FOR xiaomei = Password('xinmima');


GRANT语句

GRANT要求你至少给出以下信息:

 要授予的权限;

 被授予访问权限的数据库或表;

 用户名。

GRANT SELECT ON dbname.* TO xiaomei;

此GRANT允许用户在dbname.*(dbname数据库的所有表)上使用SELECT。通过只授予SELECT访问权限,用户xiaomei对dbname数据库中的所有数据具有只读访问权限。


查看用户账号权限

SHOW GRANTS FOR xiaomei;


REVOKE语句

GRANT的反操作为REVOKE,用它来撤销特定的权限。下面举一个例子:

REVOKE SELECT ON dbname.* TO xiaomei;

这条REVOKE语句取消刚赋予用户xiaomei的SELECT访问权限。被撤销的访问权限必须存在,否则会出错。


GRANT和REVOKE可在几个层次上控制访问权限:

 整个服务器,使用GRANT ALL和REVOKE ALL; 

 整个数据库,使用ON database.*; 

 特定的表,使用ON database.table; 

 特定的列;

 特定的存储过程。



未来的授权

在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据库和表之前设计和实现安全措施。

这样做的副作用是,当某个数据库或表被删除时(用DROP语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然起作用。


简化多次授权

可通过列出各权限并用逗号分隔,将多条GRANT语句串在一起,如下所示:

GRANT SELECT,INSERT ON dbname.* TO xiaomei;


参考:《MySQL必知必会》

修改时间 2021-01-14

真诚赞赏,手留余香
赞赏
随机推荐
如何在ecshop首页或任意页面显示用户的当前余额
Windows下解决Apache2.4日志文件太大的方法
Vue.js 源码学习笔记
MySQL 函数 concat、concat_ws 和 group_concat
axios上传图片遇到的问题
macOS 自动登录 ssh
CSS 实现三角形
色女手绘 2019.03.03 2.5小时练习
Cheerio 中文文档
ThinkPHP5.* 远程代码执行高危漏洞的修复