本文已参与「新人创作礼」活动,一起开启掘金创作之路
DCL
简单了解即可(一般是DBA操作)
我们现在默认使用的都是root用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。用户和权限的管理可以通过DCL(Data Control Language)来实现。
(一)创建用户
语法
CREATE USER '用户名'@ '主机名' IDENTIFIED BY '密码'
-- 1、`用户名`:将创建的用户名
-- 2、`主机名`:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
-- 3、`密码`:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
示例
-- user1用户只能在localhost这个IP登录mysql服务器
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123';
-- user2用户可以在任何电脑上登录mysql服务器
CREATE USER 'user2'@'%' IDENTIFIED BY '123';
-- 使用新创建user1登录
(二)授权用户
用户创建之后,基本没什么权限!需要给用户授权。
语法
GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';
-- 1、`GRANT` 授权关键字
-- 2、授予用户的权限,如`SELECT`,`INSERT`,`UPDATE`等。如果要授予所的权限则使用`ALL`
-- 3、 `数据库名.表名`:该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如`*.*`
-- 4、 `'用户名'@'主机名'`: 给哪个用户授权
示例1
-- 给user1用户分配对mydb5这个数据库操作的权限。
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb5.* TO 'user1'@'localhost';
注意要使用root用户进行授权
示例2
-- 给user2用户分配对所有数据库操作的权限。
GRANT ALL ON *.* TO 'user2'@'%';
(三)查看权限
语法
SHOW GRANTS FOR '用户名'@'主机名';
示例
-- 查看user1用户的权限
SHOW GRANTS FOR 'user1'@'localhost';
(四)删除用户
语法
DROP USER '用户名'@'主机名';
示例
-- 删除user2
DROP USER 'user2'@'localhost';
(五)修改管理员的密码
语法
mysqladmin -uroot -p password 新密码 -- 新密码不需要加上引号
示例
mysqladmin -uroot -p password 123456
输入老密码
-- 注意:要在未登录的情况下操作
(六)修改普通用户密码
语法
set password for '用户名'@'主机名' ='新密码';
示例
set password for 'user1'@'localhost' = '666666';
-- 注意:要在登录情况下操作