MySQL基本概念和常用命令

1 MySQL简介
引用
Mysql是1985几个瑞典小伙开发的,后来他们成立啦Mysql AB公司,他们当时开发mysql的初衷是为零售商提供数据仓库服务,这也是为什么mysql擅长查询而不是事务处理原因啦,所以他们设计啦一个利用索引顺序存储数据的方法,也就是ISAM存储引擎算法,后来发展为MyISAM存储引擎。mysql具有高性能,高可靠性,易用性等特点,主要适合web网站系统,日志记录系统,数据仓库系统,和嵌入式系统


2.Mysql架构组成
引用
mysql的物理组成:日志文件,数据文件,Replication相关文件,其他文件

引用
mysql server的系统架构: SQL Layer和 Storage Engine Layer

引用
Mysql自带工具介绍mysqladmin命令
#ping 命令查看server是否正常提够服务
mysqladmin -uroot -proot -h localhost ping

#status命令查看当前msyql server的几个状态值
mysqladmin -uroot -proot -h localhost status

#processlist命令获取当前数据库连接线程信息
mysqladmin -uroot -proot -h localhost processlist


3.MySQL 插件式储存引擎介绍
引用
MyISAM引擎的每一个表都被存放为以表名命名的三个物理文件:tableName.frm,tableName.MYD,tableName.MYI
支持三种索引: B-Tree, R-Tree, Full-text(B-Tree,解决like查询低效问题)

引用
InnoDB储存引擎特点:支持事务安全,数据多版本读取,外键支持


4 MySQL安全管理

引用
Mysql的权限信息主要储存在几个被称为grant tables的系统表中,即mysql.User, mysql.db, mysql.host, mysql.table_priv, 和 mysql.column_priv,每次手工修改权限表之后要运行'FLUSH PRIVILEGES', 如果通过Grant, Revoke, Create user或者Drop user命令调整权限,不需要调用'FLUSH PRIVILEGES'

引用
#查看某个用户目前拥有的权限,可以使用如下命令查看或者直接查询权限表
root@localhost : mysql> show grants for 'username'@'hostname'

引用
Mysql的权限分为5个级别:Global,Database,Table, Column, Routine Level,权限优先级依次下降

引用
Global Level的权限控制是指全局权限控制,所有权限信息保存在mysql.user表中
创建用户: create user  'test'@'localhost' IDENTIFIED  by 'test';
root@localhost : mysql> Grant select, update, delete, insert on *.* to 'test'@'localhost';

引用
Database Level权限控制
root@localhost : mysql> grant alter on test.* to 'test'@'localhost'

引用
Table Level权限控制:
root@localhost : mysql> grant index on test.t1 to 'test'@%.walmart.com

引用
Column Level权限控制,需要在权限名称后面将要授权的列名通过括号括起来
root@localhost : mysql> grant select(id,value) on test.t2 to 'test'@'%walmart.com'

引用
Routine Level 权限控制只有execute 和alter routine两种,主要针对procedure 和 fuction
root@localhost : mysql> grant execute on test.p1 to 'test'@'localhost';


4.mysql 备份和恢复
引用
mysql 备份包括逻辑备份和物理备份


引用
逻辑备份:
1 生成INSERT语句备份,在mysql运行的状体下想要取得某个时间点的备份,只有以下两种情况
(i)同一时刻取出所有数据,需要添加--single-transaction选项
root@localhost : mysql> mysqldump --single-transaction dbname
(ii)是数据库数据处于静止状态,添加--lock-all-tables选项

2 生成特定格式的纯文本备份数据文件
root@localhost:mysql> select * INTO outfile 'dump.txt' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' from tableName;

或者

root@localhost:mysql> mysqldump -uroot -proot -T/D:/mysqldump test test_outfile --fields-enclosed-by=\" --fields--terminated-by=,



引用
还原逻辑备份
(i)如果是insert语句的逻辑备份
a: mysql -uroot -p < backup.sql
b: root@localhost:mysql> source /tmp/backup.sql

(ii)如果备份是以特殊分割符分割的纯数据文本文件
mysqlimport --user=name -password=pwd test \ --fields-enclosed-by=\" --fields-terminated-by=, /tmp/test_outfile.txt

或者

load data infile '/tmp/test_outfile.txt' into table test_outfile fields terminated by '"' enclosed by ',';


引用
物理备份:
1. MyISAM 储存引擎的物理备份:
root@localhost:mysql> mysqlhotcopy db_name new_db_name

2. InnoDB储存引擎的物理备份:  使用ibbackup

猜你喜欢

转载自caerun.iteye.com/blog/1154798