MySql 用户权限

Posted debug之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql 用户权限相关的知识,希望对你有一定的参考价值。

# 增加指定数据库具有插入、查询、更新以及删除的权限用户
grant insert,select,update,delete on databasename.tablename to username@localhost identified by 'password';
# localhost 只能本地登陆
# ‘%’ 表示所有地址能够登陆
flush privileges; # 刷新权限设置

# 查看root@localhost 的权限
show grants for root@localhost

修改密码

mysql -u root

use mysql;
update user set Password = PASSWORD('new password') where user = 'root';
flush privileges;

删除用户

delete from  user where User ='username' and host = 'localhost';
flush privileges;

drop user username@'%';

一些命令

describe tablename; 
desc tablename ;
show columns from tablename;# 获取表结构

rename table tablename origin_table_name to new_table_name; # 更改表名

update tablename set fieldname= replace(fidlename,'oldContent','new_content');# 更新字段内容

权限介绍

mysql库中存在4个控制权限的表,分别为userdbtables_privcolumns_priv

mysql权限表的验证过程为:

  1. 先从user表中的Host,User,Password这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。

  2. 通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

权限级别

全局性的管理权限:作用于整个MySQL实例级别 。

grant all privileges on *.* to root@localhost;

数据库级别的权限:作用于某个指定的数据库上或者所有的数据库上 。

grant select,insert,update,delete on database_name.* to user_name@'%';

数据库对象级别的权限:作用于指定的数据库对象上(表、视图等)或者所有的数据库对象上。

grant select,insert,update,delete on database_name.table_name to user_name@'%';
# user_name 具有select ,insert,update和delete 权限。


以上是关于MySql 用户权限的主要内容,如果未能解决你的问题,请参考以下文章

Django REST框架--认证和权限

Oracle-常用数据库对象笔记(片段)

gitlab 权限说明

如何修复“代码应明确检查权限是不是可用”错误

片段中的请求权限不显示对话框

片段中带有 RequestPermission 的 registerForActivityResult 不起作用