MySQL权限 索引

一.mysql权限

1. 创建客户

CREATE USER ‘用户名’@‘来源地址’ [IDENTIFIED BY [PASSWORD] ‘密码’];

2.查看用户信息

创建后的用户保存在mysql 数据库的user表里
USE mysql;
SELECT User,authentication_string,Host from user;

重命名指定
RENAME USER ‘zhangsan’@‘localhost’ TO ‘lisi’@‘localhost’;
删除用户
DROP USER ‘lisi’@‘localhost’ ;

修改当前密码
SET PASSWORD = PASSWORD(‘abc123’);

修改其他用户密码
SET PASSWORD FOR ‘user1’@‘localhost’ = PASSWORD(‘abc123T’);

3.修改密码

修改当前密码
SET PASSWORD = PASSWORD(‘abc123’);

修改其他用户密码
SET PASSWORD FOR ‘user1’@‘localhost’ = PASSWORD(‘abc123T’);

忘记root密码的解决办法
修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表

systemctl restart mysqld
mysql #直接登录

然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD(‘abc123’) where user=‘root’;

5.给予/取消执行权限

grant(授予) 动作 on 库.表 to 用户名:主机名 identified by 密码;

revoke(取消) 动作 on 库.表 from 用户名:主机名;
授权用户权限是all privilege。这个all privilege都有哪些权限?all privilege权限如下:
insert(插入数据)
select (查询数据)
update (更新表的数据)
delete(删除表中数据)
create (创建库,表)
drop(删除库,表)
refernces
index(建立索引)
alter(更改表属性)
create temp orary tableslock tables (锁表)
execute
create view (创建视图)
show view(显示视图)
create routine(创建存储过程)
alter routine(修改存储过程)
event(事件)
trigger on(创建触发器)

注:一般不会给删除权限

二.索引

1.定义

索引可以理解为一本书中的目录,方便读者在一大堆数据中定位到自己想要的数据,将数据和地址绑定在一起,若要查询其中一个数据直接靠索引指导到该数据的地址即可。

2.索引的作用

设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。

●当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。

●可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。

●通过创建唯一(键)性索引,可以保证数据表中每一行数据的唯一性。

●可以加快表与表之间的连接。

●在使用分组和排序时,可大大减少分组和排序的时间。

3.索引的副作用

索引的副作用:
●索引需要占用额外的磁盘空间。
对于 MyISAM 引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。
而 InnoDB 引擎的表数据文件本身就是索引文件。
●在插入和修改数据时要花费更多的时间,因为索引也要随之变动。

4.索引的分类和创建

4.1 普通索引

最基本的索引类型,没有唯一性之类的限制。
●直接创建索引
CREATE INDEX 索引名 ON 表名 (列名[(length)]);
●修改表方式创建
ALTER TABLE 表名 ADD INDEX 索引名 (列名);
●创建表的时候指定索引
CREATE TABLE 表名 ( 字段1 数据类型,字段2 数据类型[,…],INDEX 索引名 (列名));

4.2 唯一索引

与普通索引类似,但区别是唯一索引列的每个值都唯一。
唯一索引允许有空值(注意和主键不同)。如果是用组合索引创建,则列值的组合必须唯一。添加唯一键将自动创建唯一索引。

●直接创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名);

●修改表方式创建
ALTER TABLE 表名 ADD UNIQUE 索引名 (列名);

●创建表的时候指定
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,…],UNIQUE 索引名 (列名));

4.3 主键索引

是一种特殊的唯一索引,必须指定为“PRIMARY KEY”。
一个表只能有一个主键,不允许有空值。 添加主键将自动创建主键索引。
创建表的时候指定
CREATE TABLE 表名 ([…],PRIMARY KEY (列名));

●修改表方式创建
ALTER TABLE 表名 ADD PRIMARY KEY (列名);

4.4 组合索引(单列索引与多列索引)

可以是单列上创建的索引,也可以是在多列上创建的索引。需要满足最左原则,因为select语句的 where条件是依次从左往右执行的,所以在使用select 语句查询时where条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。

CREATE TABLE 表名 (列名1 数据类型,列名2 数据类型,列名3 数据类型,INDEX 索引名 (列名1,列名2,列名3));
select * from 表名 where 列名1=‘…’ AND 列名2=‘…’ AND 列名3=‘…’;

注:顺序从左到右,如果不是则索引不生效

4.5 全文索引(FULLTEXT)

适合在进行模糊查询的时候使用,可用于在一篇文章中检索文本信息。

●直接创建索引

CREATE FULLTEXT INDEX 索引名 ON 表名 (列名);

●修改表方式创建

ALTER TABLE 表名 ADD FULLTEXT 索引名 (列名);

●使用全文索引查询

SELECT * FROM 表名 WHERE MATCH(列名) AGAINST(‘查询内容’);

5.查看索引

show index from 表名;
show index from 表名\G; 竖向显示表索引信息
show keys from 表名;
show keys from 表名\G;

三. 总结

mysql注意权限不能给删除权限,
索引的使用因情况而异:
1、小字段
2、唯一性强的字段
3、更新不频繁,但查询率很高的字段
4、表记录超过300+行
5、主键、外键、唯一键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值