用户管理

之前默认使用的root用户,MySQL还支持其他用户,MySQL的用户系统与Linux的用户系统类似,不同的用户具有不同的权限。

MySQL使用mysql数据库的user表来存储用户信息,mysql数据库是默认创建的。

mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
4 rows in set (0.02 sec)

上面的user列是用户名,host列表示主机名(用户可以在该主机上启动客户端来连接服务器)。

创建用户

使用CREATE USER语句创建用户,需要指定3项内容:

  • 用户名。
  • 主机名——指定用户可以在哪些机器上启动(也可以使用IP地址表示主机名)。默认值为'%',表示该用户可以在任意主机上启动客户端。
  • 密码——如果省略则表示不需要密码。

示例:

CREATE USER 'xiaohaizi'@'localhost' IDENTIFIED BY '88888888';

上面的'用户名'@'主机名'都被单引号括起来了,其实如果这两项不含特殊字符的话,可以省略单引号。

修改密码

ALTER USER 'xiaohaizi'@'localhost' IDENTIFIED BY '12345678';

删除用户

DROP USER 'xiaohaizi'@'localhost';

权限管理

刚创建的用户只有非常小的权限,无法看到其他数据库。如果想要操作数据库,则必须先赋予权限。

授予权限

GRANT 权限名称
ON 应用级别
TO '用户名'@'主机名'
[WITH GRANT OPTION]

权限名称:代表不同的权限,比如SELECT, UPDATE, CREATE等,如下:

权限名称描述
ALL [PRIVILEGES]代表除了GRANT OPTION、PROXY以外的其他所有权限
ALTER修改数据库、表结构的权限
CREATE创建数据库和表的权限
DELETE删除记录的权限
DROP删除数据库、表和视图的权限
INSERT插入记录的权限
SELECT使用SELECT语句的权限
UPDATE使用UPDATE语句的权限
...

应用级别:表示可以作用的数据库和表是哪个,有以下几类:

  • *.* : 代表全局级别,可以作用于任何数据库下的任何对象(诸如表、视图)。
  • 数据库名.* : 代表数据库级别,可以作用于该数据库下的任何对象。
  • 数据库名.表名: 表级别,只能作用于这个表中的列。

WITH GRANT OPTION: 表示该用户可以将自己拥有的权限授予其他人。

查看权限

SHOW GRANTS FOR 'xiaohaizi'@'localhost';

移除权限

REVOKE 权限名称
ON 应用级别
FROM '用户名'@'主机名';

















  • 无标签