mysql 中用户与权限的操作
来源:互联网 发布:rlg网络用语什么意思 编辑:程序博客网 时间:2024/06/05 08:40
mysql中用户权限的操作大部分都可以通过修改mysql.user表中的信息来达成,此外还有特定的sql语句可以实现相同的功能。若要实现精细的操作,还可以查看db, host,tables_priv, columns_priv和procs_priv等等表格。
但是需要注意的是:通过操作mysql.user实现的功能在日志,和命令历史中会留下记录,导致不安全因素。 因此最好是直接通过专用命令来实现。
实际上, mysql中的访问控制一般分为以下几个审查阶段:
- user权限表,匹配user, host等字段,看看请求的全局权限是否被允许,如顺利匹配,则操作被执行,否则继续向下查找
- db权限表,匹配user, host等字段,看看请求的数据库级别的权限是否被允许,如顺利匹配,则操作被执行,否则继续向下查找
- tables_priv权限表, 匹配user, host等字段,看看请求的数据表级别的权限是否被允许,如顺利匹配,则操作被执行,否则继续向下查找
- columns_priv权限表, 匹配user, host等字段,看看请求的列级别的权限是否被允许,如顺利匹配,则操作被执行,否则返回错误信息
用户权限可以参照以上流程按照实际的需要来进行设置。
1 增加用户
a 使用创建用户命令 creat user 'test'@'localhost' identified by 'passwd'; b 使用GRANT语句 grant select, update on *.* to 'test'@'localhost' identified by 'passwd'; c 通过INSERT在mysql.user表中直接插入新用户信息 insert into user (host, user, password) values('localhost', 'user', PASSWORD('passwd'));
2 添加用户权限
用户的权限在mysql服务启动时已经读入,所以若要使权限生效,需要在操作后添加flush privileges
语句。
a 使用GRANT语句赋权,在这里要注意mysql中通配符的使用('%'代表所有用户或者主机, *代表所有schema和table等等) all privileges代表除grant之外的所有权限,如果要添加grant权限,则需要另外用with grant option语句 管理权限(super, file, process等等)不能指定数据库和表,必须使用*.* 如:grant all privileges on *.* to 'test'@'localhost' identified by 'passwd' with grant option; 注意:这里的all privileges可以用all代替,grant表示的是给用户增加的权限,用户已有的权限则仍然保留。 b 通过UPDATE在mysql.user表中更改privilege的信息(这样修改的是该用户在选中的数据库中的权限),'Y'为有次权限, 'N'为无此权限 一般的权限字段为: 操作名+'_priv'后缀,操作名的单词间用下划线隔开 如:grant权限为: grant_priv 具体权限的种类和作用可以用 show privileges来查看 修改权限的字段可以用 desc mysql.user来查看 例:update user set update_priv='Y' where user='test' and host='localhost';
3 查看用户权限
a 使用show grants查看用户赋权的sql语句 show grants for test@localhost; b 使用select 查询mysql.user表 select host, user, update_priv from user;
4 修改已有用户的密码
a 使用set password语句 set password for 'test'@'localhost'=password('passwd'); 若更改自身的密码则可以写成: set password=password('passwd'); b 更新mysql.user中的password字段 update user set password=password('passwd') where user='test' and host='localhost'; c 使用grant语句 grant usage on *.* to 'test'@'localhost' identified by 'passwd'; d 也可以在mysql环境外使用语句: mysqladmin -u test -p password "passwd" e 若密码丢失,也可以先用--skip-grant-tables启动mysql服务,再用abc来进行修改。
5 删除用户
a 使用drop user直接删除 drop user test@localhost; b 使用delete from从mysql.user表中删除 delete from user where user='test' and host='localhost';
6 撤销用户的权限
a 使用revoke语句 revoke select on *.* from 'test'@'localhost'; b 使用update修改mysql.user中的_priv信息 update user set select_priv='N' where user='test' and host='localhost';
阅读全文
0 0
- mysql 中用户与权限的操作
- mysql的用户与权限
- MYSQL 的用户与权限
- 操作mysql用户,权限
- MYSQL用户和权限的相关操作
- mysql用户与权限
- MySQL的用户与权限管理
- mysql 用户与权限的管理
- mysql 新建用户 权限 操作
- MYSQL用户和权限操作
- ubuntu中用户与权限的问题
- Mysql用户与权限管理
- Mysql用户与权限管理
- Mysql用户与权限管理
- Mysql用户与权限管理
- Mysql用户与权限管理
- MySQL 用户与权限管理
- Mysql用户与权限管理
- mysql配置文件相关
- percona server安装
- tomcat虚拟目录配置
- CCDEBUG 软件修复终极教程
- Qt for Android创建AndroidManifest.xml和Java类文件
- mysql 中用户与权限的操作
- mysql中的数据库操作
- Struts2的struts.xml配置中常量含义
- 国王和100个囚犯还有1盏灯
- mysql中的数据表操作
- mysql数据增删改查操作
- Android Studio如何永久显示行数
- JAVAOOP知识点总结
- mysql中的数据类型