索引、账户管理

索引

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

更通俗的说,数据库索引好比是字典前面的目录,能加快数据库的查询速度

索引目的

索引的目的在于提高查询效率

索引原理

通过不断的缩小想要获得数据的范围来筛选出最终想要的结果

                                                           B树(根节点至少两个孩子)

-- 创建测试表test_index

create table test_index(title varchar(10));

-- 使用python程序(ipython也可以)通过pymsql模块 向表中加入十万条数据

-- 开启运行时间监测

set profiling=1;

-- 查找第1万条数据ha-99999

select * from test_index where title='ha-99999';

-- 查看执行的时间:(单位秒)

show profiles;

-- 为表title_index的title列创建索引

create index title_index on test_index(title(10));-- 长度 和建表语句长度一样 int类型可以不用写

-- 执行查询语句

select * from test_index where title='ha-99999';

-- 再次查看执行的时间

show profiles;

-- 查看索引

show index from 表名;

Table :表名Key_name :索引名Column_name :title字段有索引

-- 查看test_index表索引

show index from test_index;

-- 查看商品表索引

show index from goods;

-- 删除索引

drop index 索引名称 on 表名;

PRI:主键        MUL:外键(别的表主键)

主键、唯一键默认建立索引,因此通过主键、唯一键查询效率高,而通过普通字段查询,效率低

6. 注意:

要注意的是,建立太多的索引将会影响更新和插入的速度

7. 哪些情况需要创建索引 :数据量很大而且这个字段经常查

哪些情况需要创建索引

1、主键自动建立唯一索引

2、频繁作为查询条件的字段应该创建索引

3、查询中与其他表关联的字段,外键关系建立索引

4、频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引

5、WHERE条件里用不到的字段不创建索引

6、查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度

7、查询中统计或者分组字段

哪些情况不需要创建索引

1、表记录太少

2、经常增删改的表

3、如果某个数据列包含许多重复内容,为它建立索引就没有太大的实际效果

账户管理

1. 查看所有用户

-- 所有用户及权限信息存储在mysql数据库的user表中

-- 查看user表的结构

desc user;

user这一列:可以登录的MySQL用户(表示用户名)

host这一列:可以通过哪里登录(表示允许访问的主机)

1)当出现%,表示可以在任何地方登录   

  2)localhost,表示只能在本地登录,有密码也不好使

authentication_string表示密码,为加密后的值

-- 查看所有用户

select user, host,authentication_string from user;

不是明文密码,否则数据库被盗密码就知道了(密码要用加盐的方式加密,登录注册时也要用password(%s)进行加密

需要使用实例级账户登录后操作,以root为例

常用权限主要包括:create、alter、drop、insert、update、delete、select

如果分配所有权限,可以使用all privileges

-- 创建账户&授权

grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

grant:授权 on:哪一个数据库的哪一个表to:给谁 '用户名':新的用户名

'访问主机':如果是localhost,表示只能在本地登录,有密码也不好使;如果是%,表示可以在任何地方登录

创建前提:

step1:使用root登录

mysql -uroot -p

step2:创建账户并授予所有权限(在cw数据库执行)

-- localhost:表示只能在本地登录,有密码也不好使

grant select on cw.* to 'laoweng'@'localhost' identified by '2361559775';

-- %:表示可以在任何地方登录

grant select on cw.* to 'laoweng'@'%' identified by '2361559775';

-- 查看所有的数据库 (\q)

show databases;

-- 查看用户有哪些权限

show grants for laoweng@localhost; 

step3:退出root的登录

\q 

step4:使用laoweng账户登录

mysql -ulaoweng -p 

就两个,除了自己的cw,还有一个是自带的,因为这个账户只有cw数据库的查询权限

-- 再次创建用户 (创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对cw数据库中的所有表拥有所有权限)

grant all privileges on cw.* to "laoli"@"%" identified by "12345678";

laoli    |    %:表示只要跟我一个局域网就可以使用laoli这个账号登录我现在的数据库

账户管理 (二)账户操作

1. 修改权限

grant 权限名称 on 数据库 to 账户@主机with grant option;

-- 刷新权限

flush privileges;

2. 修改密码

使用root登录,修改mysql数据库的user表

使用password()函数进行密码加密(authentication_string表示密码)

update user set authentication_string=password('新密码') where user='用户名';

eg:修改mysql数据库user表里的laoweng这个账户的密码,将其改成123

update user set authentication_string=password('123') where user='laoweng';

 注意修改完成后需要刷新权限刷新权限:

flush privileges 

3. 远程登录(危险慎用)

为什么危险慎用? 

只要允许远程登录,就可以扫描你的IP和端口,然后在网上下载字典,对你的root账户进行暴力登录,从而导致脱库 

如果授权了(有%),还登不上,通过Linux系统sudo vim修改/etc/mysql/mysql.conf.d/mysqld.cnf 配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 

然后重启msyql(Linux版)

sudo service mysql restart

重启mysql(windows版)

 home键——>搜索服务——>找到MySQL57——>右键——>重新启动

重启之后,在另外的一台机器上进行连接测试

不用远程登录,可以用SSH

如果依然连不上,可能原因:

1) 网络不通

通过 ping xxx.xxx.xx.xxx可以发现网络是否正常

2)查看数据库是否配置了bind_address参数

本地登录数据库查看my.cnf文件和数据库当前参数show variables like 'bind_address';

如果设置了bind_address=127.0.0.1 那么只能本地登录

3)查看数据库是否设置了skip_networking参数

如果设置了该参数,那么只能本地登录mysql数据库

4)端口指定是否正确

4. 删除账户(推荐使用语法1,如果删不掉,再用语法2)

语法1:使用root登录

dropuser'用户名'@'主机';

eg:

dropuser'laoweng'@'%';

语法2:使用root登录,删除mysql数据库的user表中数据

delete from user where user='用户名';

eg:(删除mysql数据库user表中laoweng用户的数据)

delete from user where user='laoweng';

操作结束之后需要刷新权限

flush privileges

5. 忘记 root 账户密码怎么办 !!

一般也轮不到我们来管理 root 账户,所以别瞎操卖白粉的心了

万一呢? 到时候再来查http://blog.csdn.net/lxpbs8851/article/details/10895085

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342