文章目录
- 用户信息查看
- 用户管理
- 权限管理
- 权限体系
- 权限信息保存位置
- 权限分类
- 权限管理
- 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用户密码
- 关闭mysql服务;
- 关闭权限验证
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console --skip-grant-
tables --shared-memory
- 另开终端连接数据库,刷新权限并修改root用户密码;
- 中止步骤2,启动mysql服务
禁止root远程登录
- root是MySQL数据库的超级管理员,几乎拥有所有权限,一旦泄露就很可能导致安全性问题;
- 禁止root远程登录,要确保用户为root时,其host为localhost
知识总结,交流学习,不当之处敬请指正,谢谢!