MySQL运维基础篇之基础安全维护及对表的操作
本文零散的分享一点关于MySQL运维基础知识,后续会不断更新:
一、MySQL基础安全
1、将启动程序权限设置为700,属主和组设置为mysql
2、为mysql超级用户root设置密码
3、删除无用的用户
使用安全脚本mysql_secure_installation
4、授权用户对应的主机不要用%,权限不要给all,最小化授权,从库只给select权限。
5、不要给一个用户管所有的库,尽量专库专用户。
6、清理mysql操作日志文件~/.mysql_history日志文件中存放操作数据库的记录,安全起见要定时删除。
7、禁止开发获取到web连接的密码,禁止开发连接操作生产对外的库。
8、服务器禁止设置外网IP。
9、mysql的备份脚本设置为700权限,属主与组为root。
二、生产环境关闭MySQL的命令
1、强制关闭MySQL服务:
(1)killall mysqld
(2)pkill mysqld
(3)killall -9 mysqld
(4)kill -9 pid
2、美丽的关闭数据库
(1)mysqladmin -uroot -p shutdown
(2)/etc/init.d/mysqld stop
三、如何找回丢失的mysql root用户密码
1、停止服务/etc/init.d/mysqld stop
2、使用--skip-grant-tables启动mysql,忽略登陆验证
mysqld safe --skip-grant-tables --user=root
3、登陆root用户修改密码
4、重启mysql
四、数据库管理应用
1、创建数据库,注意库名不能以数字开头,大小写不敏感;create database wy
2、查看库的字符集及校对规则show character set;
五、数据库表操作
1、MySQL表字符类型
(1)数字 类型
(2)日期和时间类型
(3)字符串类型
2、字符类型总结
(1)INT型:正常大小整数类型
(2)CHAR型:定长字符串类型,当存储时,总是用空格占满到右边指定长度
(3)VARCHAR型:变长字符串类型
3、创建索引
数据库索引就像书的目录一样,如果在字段上建立了索引,那么以索引列为查询条件的时候可以加快查询速度,查询数据库按主键查询是最快的,每个表只能有一个主键,但是可以有多个普通索引列。
(1)
访问数据量很大时,不适合建立索引,会影响用户访问,尽量选择业务低谷时建立索引。
(2)对表的前n个字符创建普通索引
当遇到表中比较大的列时,列内容的前n个字符在所有内容已进阶唯一时,这是可以对列的前n个字符建立索引,而无需对整个列建立索引,这样可以节省创建索引所占用的系统空间,以及降低读取和更新维护索引消耗的系统资源。
(3)为表的多个字段创建联合索引
(4)为表的多个字段前n个字符创建联合索引
(5)索引列的创建及生效条件
1)既然索引可以加快查询速度,那么就给所有列创建索引吧
不可以,因为索引不但占用系统空间,而且更新数据时还需要维护索引数据,因此,索引是一把双刃剑,并不是越多越好,数十行到几百行的表就没必要建立索引,更新频繁,读取比较少的表要建立索引。
2)需要在哪些列上创建索引
select user,host from mysql.usr where password=....索引一定要创建在where后的条件列上,而不是select后的选择数据列上,另外,我们要尽量选择唯一值多的大表上的列建立索引
4、对表的操作
(1)向表中批量插入数据
(2)根据指定条件查看表的部分数据
1)查看test2表的前两行数据
2)查看第一行的后两行数据
(3)多表查询
1)等值查询
select stu.Sno,stu.Sname,course.Cname,sc.Grade from stu,course,sc where stu.Sno=sc.Sno and course.Cno=sc.Cno order by Sno;
2)非等值查询
(4)使用explain查看select语句执行计划
(5)修改表中特定数据
1)通过update删除伪数据,Oracle对应的伪列为rowid,rownumber
(6)增删表的字段
将指定的列添加到指定列后
(7)修改字段类型
(8)修改表名
(9)修改列名