mysql03 mysql用户管理
作者:互联网
- MySQL用户可以分为普通用户和root用户。
- root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;
- 普通用户只拥有被授予的各种权限。
1、权限表
- MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中,由MySQL_install_db脚本初始化。
- 存储账户权限信息的表主要有: user、db、host、tables_priv、columns_priv和procs_priv。
1、user表
- user表记录允许连接到服务器的账号信息,里面的权限是全局级(所有用户的数据库)的。
- MySQL 5.7中user表有42个字段,这些字段可以分为4类,分别是用户列、权限列、安全列和资源控制列。
1、用户列
- user表的用户列包括Host、User、Password,分别表示主机名、用户名和密码。
2、权限列
- user表中权限列的字段决定了用户的权限,描述了在全局范围(所有用户的数据库)内允许对数据和数据库进行的操作。
- 这些字段值的类型为ENUM,可以取的值只能为Y和N, Y表示该用户有对应的权限; N表示用户没有对应的权限。默认都是N。
- 包括普通权限和高级权限:
- 普通权限用于操作数据库,例如查询权限、修改权限等
- 高级权限用于数据库管理,例如关闭服务器、超级权限和加载用户等
- 如果要修改权限,可以用GRANT语句或UPDATE语句更改user表的这些字段来修改用户对应的权限。
3、安全列
- 安全列只有6个字段,其中两个是ssl相关的,两个是x509相关的,另外两个是授权插件相关的。
- ssl用于加密; x509标准可用于标识用户: Plugin字段标识可以用于验证用户身份的插件,如果该字段为空,服务器使用内建授权验证机制验证用户身份。
- 可以通过SHOW VARIABLES LIKE 'have_openssl'语句来查询服务器是否支持ssl功能。
4、资源控制列
- max_questions:用户每小时允许执行的查询操作次数。
- max_updates:用户每小时允许执行的更新操作次数。
- max_connections:用户每小时允许执行的连接操作次数。
- max_user-connections:用户允许同时建立的连接次数。
2、db表和host表
- db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。
- db表用户列有3个字段,分别是Host、User、Db,标识从某个主机连接某个用户对某个数据库的操作权限,这3个字段的组合构成了db表的主键。
- user表中的权限是针对所有数据库的,如果希望用户只对某个数据库有操作权限,那么需要将user表中对应的权限设置为N,然后在db表中设置对应数据库的操作权限。
- host表中存储了某个主机对数据库的操作权限,配合db权限表对给定主机上数据库级操作权限做更细致的控制。
- host表不存储用户名称,用户列只有2个字段,分别是Host和Db,表示从某个主机连接的用户对某个数据库的操作权限,其主键包括Host和Db两个字段。
- host很少用到,一般情况下db表就可以满足权限控制需求了。
3、其他权限表
1、tables_priv表
- tables_priv表用来对表设置操作权限。
2、columns_priv表
- columns_priv表用来对表的某一列设置权限
3、procs_priv 表
- procs_priv表可以对存储过程和存储函数设置操作权限
2、账户管理
1、登录和退出MySQL服务器
- mysql [OPTIONS] [database] #mysql命令
- -h, --host=name:可以使用该参数指定要连接到主机名或ip,如果不指定,默认是localhost.
- -u, --user=name:可以使用该参数指定用户名。
- -p, --password[=name]:可以使用该参数指定登录密码。
- 注意:该参数后面的字符串和-p之间不能有空格。
- -P, --port=#:可以使用该参数指定要连接的端口号,默认为3306
- -e, --execute=name。如果指定了该参数,将在登录后执行-e后面的命令或SQL语句并退出。
- database:可以在命令的最后指定要连接的数据库。
mysql -hlocalhost -P3306 -uroot -proot mysql #后面的mysql是数据库的名称 mysql -u root -proot -e "show databases;" #-e后面的命令要用双引号,不能使用单引号
2、创建普通用户
- 创建新用户,必须有相应的权限来执行创建操作。
- 在MySQL数据库中,有两种方式创建新用户:一种是使用CREATE USER或GRANT语句。另一种是直接操作MySQL授权表。
1、使用CREATE USER语句创建新用户
# #
标签:mysql03,数据库,db,用户,user,mysql,权限,priv 来源: https://www.cnblogs.com/maiblogs/p/15113967.html