之前默认使用的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项内容:
示例:
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 '用户名'@'主机名'; |