mysql 权限与账户管理
mysql 的用户管理与linux 操作系统类型,主要分为普通用户和root(超级管理员用户)。 其中root 用户具有所有权限,包括创建普通用户,删除用户和 修改用户的密码等管理权限,在实际的项目应用中 ,可以根据不同的需求创建不同权限的普通用户。
权限表
1.information_schema 数据库中保存着关于mysql 服务器所维护的多有其他数据库的信息,这些信息被称为元数据。需要注意的是information_schema 中只存在一些只读表,这些表实际上只是试图。并不是基本表。因此这些表中将无法看到与之相关的的任何文件。试图是基本表导出的虚拟表,并不展示出所有数据,用户只能通过视图修改查看到的数据。
information_schema 数据库也被称为 "系统目录" 和"数据字典 ", 每个用户都右权访问这些表,但只能看到表中与用户 访问权限 相应的行,其他信息则会显示为NULL 。
mysql 数据库 是系统的核心数据库 ,主要负责存储数据库的用户,权限设置,关键字 等 Mysql 自己需要使用的控制和管理信息。
mysql 数据库关于系统访问权限和授权信息的表如下:
1 user 包含账户和全局权限以及其他非权限列表(安全配置选项列表和资源控制选项列)。
2 db 数据库级别的权限表。
3 table_priv: 表级别的权限表
4 columns_priv: 列级别的权限表
5 procs_priv :存储过程和函数权限表
6 proxies_priv : 代理用户权限
performance_schema 是MySQL 5.5 中加入的一个优化引擎 ,主要用于收集数据库服务器性能参数,在mysql5.7默认为开启状态。
performance_schema 数据库中表的存储引擎均为 performance_schema ,所有用户不能创建存储引擎为performance_schema 的表 。
mysql 服务器维护着许多指示其配置方式的系统变量,这些性能模式表提供了系统变量信息。performance_schema 数据库中的表可以分为以下几类。
设置表: 主要用于配置和显示监视特征
当前事件表: 该表中包含每个线程最新事件,按层次不同可以为阶段事件,语句事件,事务事件。
历史记录表:与当前事件表具有相同的结构,但包含更多行。
汇总表: 主要包含按事件聚合的信息。包括了已从历史记录表中丢弃的的事件。
实例表: 记录了奥检测对象的类型,当服务器使用检测对象时,会产生一个事件。这类表提供了事件名称和说明性注释或状态信息。
杂项表:
注意 performance_schema 数据库主要收集的是 系统性能的数据,而information_schema 数据库主要存储的是系统方面元数据,两者要加以区分。
sys 数据库所有数据来自performance_schema数据库,主要是为了将performance_schema数据库的复杂度降低,让数据库管理员 DBA 能更好地阅读苦衷地内容并了解库地运行情况。
7.2 账户管理
mysql --help 命令可以查看Mysql 命令的帮助信息。
-h : 使用该参数可以指定 主机名 或 ip 地址,如果不指定,默认为 localhost
-u : 使用该参数可以指定登录用户名
-p : 指定登录密码 注意该参数后面的字符串和-p之间不能有空格。
-P : 使用该参数指定登录Mysql 的端口号,如果不指定默认为3306
-e : 使用该参数可以指定指定的sql语句。
例如: mysql -hlocalhost -uroot -p123 mytest -e"select * from test where id = 5;"
退出数据库:
exit 或 quit 或\q
创建与删除用户
在实际生产中,通常会创建一系列具备适当权限的的普通用户,从而尽可能地不用或少用root用户身份登录系统,一次来保证数据地安全访问。
语法格式 create user<用户名与登录主机> identified by [password]11
"用户名与登录主机" 指地是需要创建地用户和允许登录的主机名或IP地址,格式为'user_name'@'host', 其中 user_name 为用户名 , Host 为允许登录的主机名或IP地址。
删除用户:
方式一 :drop user '用户名'@'主机地址'
方式二: delete from mysql.user where host = '主机地址' and user = '用户名'
修改用户密码
1. 通过mysqladmin 命令修改
mysqladmin -u username -h localhost -p "当前密码" password "新密码"
2.通过set命令修改
set password for '用户名'@'ip地址'=password('新密码');
在用户登录数据库的情况下可以
set password=password('新密码') 修改新密码
3.使用ALTER 语句修改密码
alter user '用户名'@'客户端来源IP地址' identified by '新密码';
4.使用update 修改密码
update mysql.user set authentication_string = password('新密码') where user = '用户名' and host = '主机地址'
关于密码的复杂度
Mysql 5.6 后 增加了密码强度验证插件 validate_password ,该插件要求密码至少包含一个大写字母 ,一个小写字母 ,一个数字,和一个特殊字符 ,并且密码总长度至少8字符。
忘记密码:
如果root 用户忘记密码, 可以先停止Mysql 服务 并在配置文件中设置免密登录,然后重启服务。登录后使用相关命令修改root 用户名和密码即可。
删除与修改用户名
DROP USER '用户名'@'IP地址';
Mysql 的权限
用户的相关权限在user表中也存在对应的列(有权限为Y,没有权限对应为N)
以mike 为列 其user 表中对应的权限 信息如下:
select * from mysql.user where user = 'mike' and host = ''\G
授予权限
查看权限
收回权限
网友评论