mysql 小case

来源:互联网 发布:mac安装ie浏览器 编辑:程序博客网 时间:2024/05/18 05:46

1.drop truncate delete三者的区别

drop:释放空间,删除定义

truncate:释放空间,不删除定义

delete:只删除数据,不释放表空间,不删除定义


2.mysql忘记密码的两个解决方式:

Linux下打开vi /etc/my.cnf配置文件,然后添加  skip-grant-tables 跳过权限检查,进入mysql,输入update mysql.user set password = "xxx" where user="root";退出然后删掉配置文件中的skip-grant-tables,最后保存Ok

另外一种方式直接进入mysql的一个配置文件中,直接手动改密码就可以了,然后保存退出,很久以前做的,现在具体细节不记得了...



3.mysql权限级别


背景 
前几天遇到一个问题,给某业务用户赋权的时候,由于数据库比较多,为了方便,使用的是grant … on *.* 方式,后续想要收回某几个数据库的权限的时候,比如MySQL,information_schema,performance_schema这几个数据库,无法单独revoke,只能revoke *.* 之后再单独授权,因为*.*是global级别的权限,而针对单个库的则是database级别的权限。

MySQL权限级别 
MySQL 中的权限分为五个级别,分别如下:

Global Level:

Global Level 的权限控制又称为全局权限控制,所有权限信息都保存在mysql.user 表中。

Global Level 的所有权限都是针对整个mysqld 的,对所有的数据库下的所有表及所有字段都有效。

GRANT SELECT,UPDATE,DELETE,INSERT ON . TO ‘def’@’localhost’;

Global Level 主要有如下这些权限(以下为5.0.3以上版本拥有权限)

这里写图片描述

Database Level

Database Level 其作用域即为所指定整个数据库中的所有对象。

GRANT ALTER ON test.* TO ‘def’@’localhost’;

GRANT DROP ON * TO ‘def’@’localhost’;

Database Level 主要少了以下几个权限:CREATE USER,FILE,PROCESS,RELOAD,

REPLICATION CLIENT,REPLICATION SLAVE,

SHOW DATABASES,SHUTDOWN,SUPER 和USAGE 这几个权限,没有增加任何权限。

Table Level

Table Level 的权限作用范围是授权语句中所指定数据库的指定表。

GRANT INDEX ON test.t1 TO ‘abc’@’%.jianzhaoyang.com’;

Table Level 的权限由于其作用域仅限于某个特定的表,所以权限种类也比较少,仅有ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT UPDATE 这八种权限。

Column Level

Column Level 的权限作用范围就更小了,仅仅是某个表的指定的某个(或某些)列。

GRANT SELECT(id,value) ON test.t2 TO ‘abc’@’%.XXX’;

Column Level 级别的权限仅有 INSERT , SELECT 和 UPDATE 这三种。

Routine Level

Routine Level 主要针对的对象是procedure 和function 这两种对象,在授予Routine Level 权限的时候,需要指定数据库和相关对象

GRANT EXECUTE ON test.p1 to ‘abc’@’localhost’;

Routine Level 的权限主要只有EXECUTE 和ALTER ROUTINE 两种


4.




原创粉丝点击