文章目录

  • 用户信息查看
  • 用户管理
  • 权限管理
  • 权限体系
  • 权限信息保存位置
  • 权限分类
  • 权限管理
  • root用户
  • 修改root用户密码
  • 禁止root远程登录


用户信息查看

  • 用户数据保存在数据库mysql的user表中


用户管理

#创建用户
create user '用户名' [@'主机名'] [identified by '密码'];

#删除用户
drop user '用户名' [@'主机名'];

#修改密码
alter user '用户名' @'主机名' identified by '新密码';
  • 注意:MySQL的用户账号由两部分组成:用户名和主机名,即用户名@主机名,主机名可以是IP或机器名称,主机名为%表示允许任何地址的主机远程登录MySQL数据库。

权限管理

权限体系

层级

描述

全局层级

适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。

数据库层级

适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。

表层级

适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

列层级

适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。

子程序层级

CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

权限信息保存位置

表名

描述

user

用户权限表,记录账号、密码及全局性权限信息

db

记录数据库相关权限

table_priv

用户对某个表拥有的权限

column_priv

用户对某表的某个列所拥有的权限

procs_priv

用户对存储过程及存储函数的操作权限

权限分类

类型

关键字

数据

SELECT, INSERT, UPDATE, DELETE, FILE

结构

CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, CREATE VIEW, EVENT, TRIGGER

管理

USAGE, GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN, SHOW DATABASES, LOCK TABLES, REFERENCES, REPUCATION CUENT, REPUCATION SLAVE, CREATE USER

权限管理

#授权 grant
grant 权限关键字 on 数据库名.表名 to '用户名' [@'主机名'] ;

#撤销授权 revoke 
revoke 权限关键字 on 数据库名.表名 from '用户名' [@'主机名'] ;

#刷新权限
flush privileges ;

#查看权限
show grants for '用户名' [@'主机名'] ;
  • 权限关键字:参考权限分类,如果为all privileges,表示所有权限

root用户

修改root用户密码

  1. 关闭mysql服务;
  2. 关闭权限验证
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-
tables --shared-memory
  1. 另开终端连接数据库,刷新权限并修改root用户密码;
  2. 中止步骤2,启动mysql服务

禁止root远程登录

  1. root是MySQL数据库的超级管理员,几乎拥有所有权限,一旦泄露就很可能导致安全性问题;
  2. 禁止root远程登录,要确保用户为root时,其host为localhost

知识总结,交流学习,不当之处敬请指正,谢谢!