一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限,在安装mysql时就要重视安全问题. (1) 锁定mysql用户. (2) 其它任何用户都采取独立的账号登录,管理员通过mysql专有用户管理mysql服务,或者通过 root su到mysql用户下进行管理. (3) mysql用户目录下,除了数据文件目录,其它文件和目录属主都改为root. 我本…
一. 概述 在了解前两篇的权限系统介绍后,这篇继续讲账号的管理,这些管理包括账号的创建,权限更改,账号删除等.用户连接数据库的第一步都是从账号创建开始. 1.  创建账号 有两种方法可以用来授权账号:(1) 是使用grant来授权账号,(2) 是直接操作权限表. 使用grant操作简单,出错率更少.使用grant授权账号时,需先创建用户. -- 在上一篇中有演示创建一个z1@localhost用户,脚本如下: '; -- 语法如下 CREATE USER [IF NOT EXISTS] user…
1. 查看权限 -- 如果host值不是%, 就要加上host值,下面查看bkpuser用户权限(6个权限, 限本地连接) SHOW GRANTS FOR bkpuser@localhost; -- 如果host值是%, 就只要输入用户名,下面查看z1用户权限(显示所有权限,不限ip连接) SHOW GRANTS FOR z1; 2. 更改权限 可以进行权限的新增和回收,使用grant来新增,使用revoke来回收.在前面52章节中也有介绍revoke的使用. 也可以直接对user,db,tab…
一.概述 接着上篇的权限介绍,当用户进行连接的时候,权限表的存取过程有以下两个阶段: (1) 先从user表中的host,user, authentication_string 这3个字段中判断连接的ip,用户名,密码是否存在于表中,如果存在,则通过身份验证. (2) 通过验证后,则按照以下权限表的顺序得到数据库权限:user->db->table_priv -> columns_priv. 四个表分别是:user全局权限(第一阶段),db具体数据库权限(第二阶段),table_priv…
一.概述 mysql 的权限系统主要用来对连接到数据库的用户进行权限验证,以此来判断此用户是否属于合法用户,以及合法用户给予的相应数据库权限.下面将介绍权限系统的工作原理,以及将要熟练掌握账号的管理和使用方法(mysql版本 5.7). 1.1  权限系统的工作原理 mysql 权限系统通过两个阶段进行认证:(1) 对连接的用户进行身份认证,合法的用户通过认证,不合法的用户拒绝连接:(2) 对通过认证的合法用户赋予相应的权限,用户可以在这些权限范围内对数据库做相应操作. 对于身份认证, mysq…
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全备份文件的目录,还原到datadir目录下. xtrabackup --copy-back --target-dir=/data/backups/ 可以使用xtrabackup --move-back选项恢复备份.这个选项类似于xtrabackup --copy-back,唯一的区别是它将文件移动到…
一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrabackup Option 指南 选项名 说明 --apply-log-only 仅在准备备份时,执行重做阶段.这对于增量备份非常重要. --backup 做一个备份, 并把它放在xtrabackup——target-dir目录里 --binlog-info 此选项控制Percona XtraBack…
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存储引擎是事务型(innodb)还是非事务型.两种不同的存储引擎备份方式在处理数据一致性方面是不太一样. (2) 确定使用全备份还是增量备份.增量备份是备份每天的增量日志,恢复时需要全备份加所有增量备份.这里与sql server的完整备份+日志备份或差异备份有点类似. (3) 可以考虑复制方法来做异…
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚.系统默认值是50秒.用户可以根据业务自行设置.生产环境不推荐使用过大的 innodb_lock_wait_timeout 参数值. -- 查看事务超时时间 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; 也可以对当前会话进行超时设置如: set…
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_id字段有索引,Cityname字段没有索引: 会话1 会话2 SET autocommit=0; SET autocommit=0; SELECT * FROM city WHERE city_id=14 AND Cityname='深圳' FOR UPDATE; city_id      cou…