DCL (Data Control Language)
- DDL: create / alter / drop
- DML:insert /update/delete
- DQL :select /show
- DCL :grant /revoke
我们现在默认使用的都是 root 用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。
mysqld 是 MySQL 的主程序,服务器端。mysql 是 MySQL 的命令行工具,客户端。
1. 创建用户
语法:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
关键字说明:
关键字 |
说明 |
‘用户名’ |
将创建的用户名 |
‘主机名’ |
定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost,如果想让该用户可以 从任意远程主机登陆,可以使用通配符% |
‘密码’ |
该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 |
具体操作:
创建 user1 用户,只能在 localhost 这个服务器登录 mysql 服务器,密码为 123
create user 'user1'@'localhost' identified by '123';
创建 user2 用户可以在任何电脑上登录 mysql 服务器,密码为 123
create user 'user2'@'%' identified by '123';
创建的用户名都在 mysql 数据库中的 user 表中可以查看到,密码经过了加密。
2. 给用户授权
用户创建之后,没什么权限!需要给用户授权
语法:
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';
关键字说明:
关键字 |
说明 |
GRANT…ON…TO |
授权关键字 |
权限 |
授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。如果要授 予所有的权限则使用 ALL |
数据库名.表名 |
该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作 权限则可用表示,如.* |
‘用户名’@‘主机名’ |
给哪个用户授权,注:有 2 对单引号 |
具体操作:
给 user1 用户分配对 test 这个数据库操作的权限:创建表,修改表,插入记录,更新记录,查询
grant create,alter,insert,update,select on test.* to 'user1'@'localhost';
用户名和主机名要与上面创建的相同,要加单引号。
给 user2 用户分配所有权限,对所有数据库的所有表
grant all on *.* to 'user2'@'%';
3. 撤销权限
语法:
REVOKE 权限 1, 权限 2... ON 数据库.表名 revoke all on test.* from 'user1'@'localhost'; '用户名'@'主机名';
关键字说明:
关键字 |
说明 |
REVOKE…ON…FROM |
撤销授权的关键字 |
权限 |
用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等,所有的权 限则使用 ALL |
数据库名.表名 |
对哪些数据库的哪些表,如果要取消该用户对所有数据库和表的操作权限则可用表 示,如.* |
‘用户名’@‘主机名’ |
给哪个用户撤销 |
具体操作:
撤销 user1 用户对 test 数据库所有表的操作的权限
revoke all on test.* from 'user1'@'localhost';
4. 查看权限
语法:
SHOW GRANTS FOR '用户名'@'主机名';
具体操作:
查看 user1 用户的权限
usage 是指连接(登陆)权限,建立一个用户,就会自动授予其 usage 权限(默认授予)。
5. 删除用户
语法
DROP USER '用户名'@'主机名';
具体操作:
删除 user2
drop user 'user2'@'%';
6. 修改管理员密码
语法
mysqladmin -uroot -p password 新密码
需要在未登陆 MySQL 的情况下操作,新密码不需要加上引号。
具体操作:
- 将 root 管理员的新密码改成 123456
- 要求输入旧密码
- 使用新密码登录
7. 修改普通用户密码
语法:
set password for '用户名'@'主机名' = password('新密码');
具体操作:
- 将’user1’@‘localhost’的密码改成’666666’
- 使用新密码登录,老密码登录不了