mysql用户管理和索引

一、用户管理

1.创建用户

登录数据库 该主机ip为192.168.206.40

mysql -u root -p123456

创建用户

create user 'xy104'@'192.168.206.50' identified by '123456';

#解释如下

xy104用户名

192.168.206.50 指定登录的ip地址

除了指定ip地址还能:

% 表示任意ip地址

localhost 是权限最高的root账户

identified by '123456' 指定该用户的密码

#在192.168.206.50上登录40主机的mysql

mysql -h 192.168.206.40 -u xy104 -p123456 #用命令行的方式远程登录

 2.赋权和解除权限

 查看用户的权限

 show grants for 'xy104'@'192.168.206.50'

 赋权grant

 权限有:select,insert,delete,drop,update,alter,create等

#给xy104查看,插入和删除的权限

grant select,insert on test1.* to 'xy104'@'192.168.206.50';

#解释如下

test1.* 左边是库名,右边是表名

*.* 任意库里的任意表

flush privileges; #刷新生效

删除权限revoke

revoke delete on test1.* from 'xy104'@'192.168.206.50';

#但是要exit退出,重新登录数据库才生效 

 3.删除用户

 drop user 'xy104'@'192.168.206.50';

 4.免密登录

vim /etc/my.cnf

skip-grant-tables

systemctl restart mysql

#去掉免密登录

vim /etc/my.cnf

#删除skip-grant-tables

systemctl restart mysql

 5.修改密码

mysql -u root -pabc123 #登录数据库

use mysql; 

select host,user,authentication_string,plugin from user\G; #查看账户密码

alter user 'root'@'localhost' identified with mysql_native_password by 'abc123'; #修改密码

update user set authentication_string = '' where user = 'root'; #把root账户的密码清空

flush privileges;

alter user 'root'@'localhost' identified with mysql_native_password by '123456';

flush privileges;

#去掉免密登录

mysql -u root -p123456 #重新登录即可

 二、只删除表内数据,保留表名和结构

方法1:delete

delete from 表名;

如果该表有自增长的字段,delete删除之后,会保留之前的自增长记录。

 #zerofill:不满足4位,前面会自动用0补齐 效果在终端里能看到,navicat看不到这个效果

 

 方法2:truncate

truncate table 表名;

#全部清空,自增长记录也会从1开始

 

 

 三、mysql的索引

 1.索引的概述

        索引在所有的关系型数据库当中都有,索引是一个排序的列表,在这个列表当中存储了索引的值和这个值对应数据所在的物理地址。

        使用索引之后,查询数据表时,可以不用全表扫描来定义数据所在行。

        可以通过索引直接找到该行数据对应的物理地址,访问数据,提高查询的速度。

        合理的设置索引可以提高数据库查询速度,也是必备的一项操作。

2. 索引的作用

优点

  • 索引就相当于书本的目录,当表很大(数据量多),或者查询涉及到多个表时(不超过三个),使用索引可以成千上万倍的提高查询速度。
  • 可以降低数据库的I/O(读写)成本,索引也会降低数据库的排序成本。
  • 也可以创建唯一性索引。
  • 加快表与表之间的连接速度。
  • 使用索引可以减少分组和排序的时间。
  • 通过索引可以提高数据库的恢复速度。

缺点

  • 索引也需要占用磁盘的空间。
  • 更新一个有索引的表比更新没有索引的表时间更长,因为索引也需要更新。

3.索引的创建原则

        虽然索引可以提高访问速度,但是也不是任何情况下都需要索引。在有索引的情况下,数据库会先查索引然后再定位到数据行。

        索引的设置如果不合理,反而会增加数据库的负担。

  • 表的主键和外键必须要有索引,但是主键和外键默认就是索引。
  • 超过300行的表数据,就需要添加索引。
  • 和其他表连接的字段,要建立索引。
  • 唯一性差的字段不适合设置索引。
  • 字段更新频繁,不适合索引。
  • 经常出现在where条件的字段当中的,尤其是大表,应该建立索引。
  • 在经常进行group by和order by时,要创建索引。

4.索引的类型

        mysql的索引默认就是B-TREE索引。

        叶子节点上包含的条目直接指向到数据行,叶子节点之间也互相连接,形成了一个向下延伸的指针,根据索引值一步一步定位到数据行。

        哈希索引:把索引值转换成值,通过对应索引的hash值定位到数据所在的行。

        一般建表的时候会直接添加索引,但也可以建完表再添加索引

 (1)主键索引

 在建表的时候添加主键约束 primary key,即自动生成主键索引

(2)一般(普通)索引

法1:在生成表之后用create直接创建

create index name_index on member1 (name(5));

#name (5): 列名当中匹配的长度,在不损失精确性的情况下,匹配的长度越小越好,减少索引文件的大小。

法2:在建表时直接添加

create table member2 (

id int(10) PRIMARY KEY,

name varchar(10),

cardid int(18),

phone int(11),

address varchar(50),

remark text,

index name_index (name)

);

(3)唯一索引

法1:建完表后直接创建

create unique index address_index on member1 (address);

explain select * from member1 where address='苏州';

法2:建表时直接添加

create table member3 (
id int(10) PRIMARY KEY,
name varchar(10),
cardid int(10),
phone int(11),
address varchar(50) UNIQUE KEY,
remark text
);

(4)组合索引

 可以是单字段的索引,也可以是多字段的组合

法1:创表时直接添加 

unique index cardid_phone_address (cardid,phone,address)

 法2:创完表后直接添加

alter table member4 add constraint uc_cardid_phone_address unique (cardid,phone,address)

 (5)全文索引

         适合模糊查询进行匹配时使用,用来检索文章当中的信息。

create fulltest index_index on member4(remark);

explain select * from member4 where match(remark) against('卡路里');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值