MySQL安全管理、数据库维护及改善性能

一、安全管理
1、访问控制

MySQL服务器的安全基础:用户对他们需要的数据有适当的访问权。

访问控制:给用户所需的权限且仅提供所需的访问权。它需要创建和管理用户账号。

PS:严肃对待root登陆的使用,仅在绝对需要时使用它。日常的MySQL操作中,不应该使用root。

2、管理用户(下面3点)

MySQL用户账号和信息存储在名为mysql的MySQL数据库中。

一般不需要直接访问,但有时需要直接访问(如需要获得所有用户账号列表),代码如下:

USE mysql;

select user from user;

PS:mysql数据库中有个user表,它包含所有用户账号;user表有个名为user的列,它存储用户登录名。

3、用户账号

A、创建用户账号:

create user ben identified by 'p@$$wOrd';

create user创建一个新用户账号。identified by用来指定口令,它指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密;为了作为散列值指定口令。

PS:创建用户账号时不一定需要口令。

grant和insert into的区别:

grant也可以用来创建用户账号,但一般来说使用create user是最清楚和简单的;

也可通过插入行到user表来增加用户,但为安全起见,不建议这么做。MySQL用来存储用户账号信息的表极为重要,因此相对于直接处理,使用标记和函数来处理这些表更好。

B、重新命名用户账号:

rename user ben to bforta;

C、删除用户账号:

删除用户账号(以及相关的权限),使用drop user语句,如下:

drop user bforta;

4、设置访问权限

创建用户账号后,必须分配访问权限。新建的用户账号没有任何访问权限,可以登录但无法读写;

1、查看某账号权限:show grants for bforta@%;

结果为:grant usage on crashcourse.* to bforta; 权限USAGE ON .表示在任意数据库和任意表上对任何东西没有权限。

MySQL的权限用:用户名和主机名结合定义user@host,如果不指定主机名,则使用默认主机名%(授予用户访问权限而不管主机名)。

2、设置权限使用grants时,要求至少给出以下信息:1要授予的权限;2被授予访问权限的数据库或表;3用户名。

grant select on crashcourse.* to bforta;

此grant允许用户在crashcourse.*(crashcourse数据库的所有表)上使用select,用户bforta对crashcourse数据库中所有数据拥有只读权限。

每个grant添加(更新)用户的一个权限,MySQL读取所有授权,并根据它们确定权限。

3、grant的反操作为revoke,用它撤销特定的权限,例如:

revoke select on crashcourse.* from bforta;

这条revoke语句取消上面的赋予用户的select权限;被撤销的权限必须存在,否则会出错。

PS:grant和revoke可在以下几个层次上控制访问权限:

·整个服务器,使用grant all和revoke all;

·整个数据库,使用on database.*;

·特定的表,使用on database.table;

·特定的列;

·特定的存储过程;

可授予或撤销的MySQL权限,请自行查看文档;

4、使用grant和revoke时,用户账号必须存在,但对所涉及的对象没有这个要求。

好处:允许管理员在创建数据库和表之前设计和实现安全措施;

缺点:当某个数据库或表被删除时,相关访问权限仍然存在,且如果将来重新创建数据库或表时,这些权限仍然起作用。

简化多次授权:通过列出各权限并用逗号分隔,将多余的grant语句串联,如下所示:

grant select,insert on crashcourse.* to bforta;

5、更改口令

1、更改用户口令,可使用set password语句,新口令必须如下加密:

set password for bforta = password('n3w p@$$w0rd');

set password更新用户口令,新口令必须传到password()函数进行加密。

2、set password还可以设置自己的口令,比如:

set password = password('n3w p@$$w0rd');

PS:不指定用户名时,set password更新当前登录用户的口令。

二、数据库维护
1、备份数据

由于MySQL数据库基于磁盘文件,普通的备份系统和例程就能备份MySQL数据,但由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定有效。

可行的解决方案:

A、使用命令行实用程序mysqldump转储所有数据库内容到某个外部文件;在进行常规备份前该程序应该正常运行,以便能正确备份转储文件;

B、使用命令行实用程序mysqlhotcopy从一个数据库复制所有数据(并非所有数据库引擎都支持该程序);

C、使用MySQL的backup table或select into outfile转储所有数据到某个外部文件;这两条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会报错。数据可用restoretable来复原。

PS:为保证所有数据被写入磁盘(包括索引数据),需要在备份前使用flush tables语句,刷新未写数据。

2、进行数据库维护

MySQL提供了一系列的语句,可用来保证数据库正确和正常运行,如下:

1、analyze table orders;

此语句用来检查表键是否正确。

2、check table orders,orderitems;

check table用来针对许多问题进行检查,在MyISAM表上还对索引进行检查。check table支持一系列的用语MyISAM表的方式,如下:

changed检查自最后一次检查以来改动过的表;

extended执行最彻底的检查;fast只检查未正常关闭的表;

medium检查所有被删除的链接并进行键检验;

quick只进行快速扫描。

3、optimize table orders;

当从一个表删除大量数据,使用此语句来收回所用的空间,从而优化表的性能。

3、诊断启动问题

服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现,MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作 为系统进程或服务自动启动的,这些消息可能看不到。

在排除系统启动问题时,首先应尽量手动启动服务器;MySQL服务器自身通过在命令行上执行mysqld启动。下面是几个重要的mysqld 命令行选项:

  • -help显示帮助(一个选项列表);

  • -safe-mode装载减去某些最佳配置的服务器;

  • -verbose显示全文本消息(为获得更详细的帮助消息与- -help联合使用);

  • -version显示版本信息然后退出。

4、查看日志文件

MySQL管理员依赖的一系列日志文件,主要的日志文件如下:

1、错误日志:包含启动和关闭问题以及任意关键错误的细节。此日志通常名为hostname.err,位于data目录中;此日志名可用- -log-error命令行选项更改;

2、查询日志:记录所有的mysql活动,诊断问题时非常有用;可能会很快地变得非常大,因此不应长时间使用它;日志名通常为hostname.log,位于data目录中,此名字可用- -log命令行选项更改;

3、二进制日志:记录更新过数据的所有语句。通常名为hostname-bin,位于data目录内,此名字可用- -log-bin命令行选项修改;

4、缓慢查询日志:记录执行缓慢的任何查询。在确定数据库何处需要优化很有用,通常名为hostname-slow.log,位于data目录中,可使用- -log-slow-querier命令行更改。

PS:使用日志时,可使用flush logs语句来刷新和重新开始所有日志文件。

三、改善性能
改善数据库性能需要知道的一些关键点:

1、关键的生产DBMS应该运行在自己专用的服务器上;

2、MySQL是用一系列默认设置预先配置的,但后期可能需要调整内存分配、缓冲区大小等;(为查看当前设置,可使用SHOW VARIABLES;和SHOW STATUS;)

3、MySQL是一个多用户多线程的DBMS,经常同时执行多个任务。如果这些任务中某个执行缓慢,则所有请求都会执行缓慢,如果遇到显著的性能不良,可使用show processlist显示所有活动进程(以及它们的线程ID和执行时间,还可以用kill命令终结某个特定进程);

4、编写同一条select语句的方法很多,应多尝试联结、并、子查询等,找出最佳方法;

5、使用explain语句让MySQL解释它将如何执行一条select语句;

6、一般情况下,存储过程执行的比一条一条的执行其中的各条MySQL语句要快;

7、总是使用正确的数据类型;

8、绝不要检索比需要的还多的数据,即:不要使用select *(除非真正需要);

9、有的操作(包括insert)支持一个可选的delayed关键字,如果使用它,将把控制立即返回给调用程序,并且一旦有可能就实际执行该操作;

10、导入数据时,应关闭自动提交;

11、必须索引数据库表以改善数据库性能,分析使用select语句以找出重复的where和order by子句(如果一个简单的where子句返回结果花费时间过长,则可以断定其中使用的列就是需要索引的对象)

12、SELECT语句中有一系列复杂的OR条件,可使用多条select语句和连接它们的union语句,可以极大的改善性能;

13、索引改善数据检索的性能,但损害数据插入、删除和更新的性能。如果有些表收集数据但不经常被搜索,则在有必要之前不要索引它们(索引可根据需要添加和删除);

14、like很慢,一般建议使用fulltext;

15、数据库是不断变化的实体;一组优化良好的表一会儿后可能就面 目全非了

16、最重要的规则:每条规则在某些条件下都会被打破。

image

最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:909038429
/./*欢迎加入java交流Q君样:909038429一起吹水聊天

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

推荐阅读更多精彩内容