《MySQL数据库入门实战精讲》学习笔记(三)
SQL语言按功能用途分为4类,分别是DDL、DML、DQL和DCL。其中,DCL是数据控制语言,主要用于管理用户和权限。
DCL语言功能
- 创建用户
- 删除用户
- 修改密码
- 给用户赋予权限
- 撤销用户权限
用户管理
创建用户
CREATE USER '用户名' [@'主机名'] [IDENTIFIED BY '密码'];
#create user'xsy'@'%'identified by '123456';
#create user'xsy'@'192.160.0.222'identified by'123456';//创建的账户只能从特定地址主机才能登录
注意:
- MySQL的用户账号由两部分组成:用户名和主机名,即用户名@主机名,主机名可以是IP或机器名称,
主机名为%表示允许任何地址的主机远程登录MySQL数据库。 - 创建出来的用户没有任何权限,需要授权才能操作数据库。否则仅能用来登录。
- 创建用户时可不提供主机名,默认主机名为%。
删除用户
DROP USER '用户名' [@'主机名'];
修改密码
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
权限管理
给用户赋予权限
grant all privileges on databaseName.tableName to '用户名' [@'主机名'] ;
# grant select on mydb.* to 'xsy'@'%'//给用户xsy赋予mydb数据库的查询权限
- 给某用户赋予某个数据库的某张表的某个权限。
- 所有数据库的所有表 表示为*.*
撤销用户权限
revoke all privileges on databaseName.tableName from '用户名' [@'主机名'] ;
#revoke select on mydb.* from 'xsy'@'%'
使用grant和revoke进行授权、撤销授权时,一般需要指定具体是哪些权限,这些权限大体可以分为3类,
数据类、结构类和管理类。
刷新权限
通常对用户权限进行修改后想要立即生效需要进行刷新。
flush privileges;
查看权限
show grants for '用户名' [@'主机名'];
禁止用户远程登录
在实际工作中,公司的DBA都会设置禁止root用户远程登录,主要原因有:
- root是MySQL数据库的超级管理员,几乎拥有所有权限,一旦泄露后果非常严重。
- root是MySQL数据库的默认用户,所有人都知道,如果不禁止远程登录,可以针对root用户暴力破解密码。
想要禁止用户远程登录就要将root账户的host改为localhost
设置方法:
首先进去mysql数据库
use mysql;
查看user表信息
select user,host from user;
若root的host已经是localhost则已经设置成功,若不是则需要修改为localhost。
update user set host = 'localhost' where user = 'root';