DCL:管理用户、授权
DBA:数据库管理员
1.管理用户
添加用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
删除用户:
DROP USER '用户名'@'主机名';
修改用户密码:
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
忘记root用户密码:
- 管理员cmd->net stop mysql 停止mysql服务
- 使用无验证方式启动mysql服务:mysql --skip-grant-tables
- 打开新的cmd窗口直接输入mysql命令敲回车即可登录成功
- use mysql;
- update user set password = password(‘你的新密码’)
where user = ‘root’; - 关闭两个窗口
- 打开任务管理器。手动结束mysqld.exe的进程
- 启动mysql服务
- 使用新密码登录
查询用户:
- 切换到mysql数据库:USE mysql;
- 查询user表:SELECT * FROM USER;
通配符:
- %表示可在任意主机使用用户登录数据库
2.权限管理
- 查询权限
show grants for ‘用户名’@‘主机名’; - 授予权限
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’; - 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@‘主机名’;
实例
-- 切换到mysql数据库
USE mysql;
-- 查询user表
SELECT * FROM USER;
-- 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
CREATE USER 'kevin'@'localhost' IDENTIFIED BY 'kevin';
CREATE USER 'jared'@'%' IDENTIFIED BY 'jared';
-- 删除用户
DROP USER '用户名'@'主机名';
DROP USER 'jared'@'%';
-- 修改密码???
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
UPDATE USER SET authentication_string = PASSWORD('root') WHERE USER = 'kevin';
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
SET authentication_string FOR 'kevin'@'localhost' = PASSWORD('root');
ALTER USER 'kevin'@'localhost' IDENTIFIED BY 'password';
-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'kevin'@'localhost';
-- 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
GRANT SELECT,DELETE,UPDATE ON db1.account TO 'kevin'@'localhost';
-- 给kevin用户授予所有权限,在任意数据库任意表上
GRANT ALL ON *.* TO 'kevin'@'localhost'
-- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
REVOKE UPDATE ON db1.account FROM 'kevin'@'localhost';