mysql 更改安全设置_MySQL安全管理、数据库维护及改善性能

1、安全管理

1、访问控制mysql

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

访问控制:给用户所需的权限且仅提供所需的访问权。它须要建立和管理用户帐号。数据库

PS:严肃对待root登录的使用,仅在绝对须要时使用它。平常的MySQL操做中,不该该使用root。安全

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

MySQL用户帐号和信息存储在名为mysql的MySQL数据库中。多线程

通常不须要直接访问,但有时须要直接访问(如须要得到全部用户帐号列表),代码以下:ide

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、设置访问权限

建立用户帐号后,必须分配访问权限。新建的用户帐号没有任何访问权限,能够登陆但没法读写;

一、查看某帐号权限:show grants for bforta@%;

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

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

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

grant select on crashcourse.* to bforta;

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

每一个grant添加(更新)用户的一个权限,MySQL读取全部受权,并根据它们肯定权限。

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

revoke select on crashcourse.* from bforta;

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

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

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

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

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

·特定的列;

·特定的存储过程;

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

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

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

缺点:当某个数据库或表被删除时,相关访问权限仍然存在,且若是未来从新建立数据库或表时,这些权限仍然起做用。

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

grant select,insert on crashcourse.* to bforta;

5、更改口令

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

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

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

二、set password还能够设置本身的口令,好比:

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

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

2、数据库维护

1、备份数据

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

可行的解决方案:

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

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

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

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

2、进行数据库维护

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

一、analyze table orders;

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

二、check table orders,orderitems;

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

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

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

medium检查全部被删除的连接并进行键检验;

quick只进行快速扫描。

三、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语句来刷新和从新开始全部日志文件。

3、改善性能

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

一、关键的生产DBMS应该运行在本身专用的服务器上;

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

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

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

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

六、通常状况下,存储过程执行的比一条一条的执行其中的各条MySQL语句要快;

七、老是使用正确的数据类型;

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

九、有的操做(包括insert)支持一个可选的delayed关键字,若是使用它,将把控制当即返回给调用程序,而且一旦有可能就实际执行该操做;

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

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

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

1三、索引改善数据检索的性能,但损害数据插入、删除和更新的性能。若是有些表收集数据但不常常被搜索,则在有必要以前不要索引它们(索引可根据须要添加和删除);

1四、like很慢,通常建议使用fulltext;

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值