文章目录
一.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、主键、外键、唯一键