MySQL基本概念和常用命令

1MySQL简介

引用
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-hlocalhostping

#status命令查看当前msyqlserver的几个状态值

mysqladmin-uroot-proot-hlocalhoststatus

#processlist命令获取当前数据库连接线程信息

mysqladmin-uroot-proot-hlocalhostprocesslist

3.MySQL插件式储存引擎介绍

引用
MyISAM引擎的每一个表都被存放为以表名命名的三个物理文件:tableName.frm,tableName.MYD,tableName.MYI

支持三种索引:B-Tree,R-Tree,Full-text(B-Tree,解决like查询低效问题)

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

4MySQL安全管理

引用
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>showgrantsfor'username'@'hostname'

引用
Mysql的权限分为5个级别:Global,Database,Table, Column, Routine Level,权限优先级依次下降
引用
Global Level的权限控制是指全局权限控制,所有权限信息保存在mysql.user表中

创建用户:createuser'test'@'localhost'IDENTIFIEDby'test';

root@localhost:mysql>Grantselect,update,delete,inserton*.*to'test'@'localhost';

引用
Database Level权限控制

root@localhost:mysql>grantalterontest.*to'test'@'localhost'

引用
Table Level权限控制:

root@localhost:mysql>grantindexontest.t1to'test'@%.walmart.com

引用
Column Level权限控制,需要在权限名称后面将要授权的列名通过括号括起来

root@localhost:mysql>grantselect(id,value)ontest.t2to'test'@'%walmart.com'

引用
Routine Level 权限控制只有execute 和alter routine两种,主要针对procedure 和 fuction

root@localhost:mysql>grantexecuteontest.p1to'test'@'localhost';

4.mysql备份和恢复

引用
mysql 备份包括逻辑备份和物理备份
引用
逻辑备份:

1生成INSERT语句备份,在mysql运行的状体下想要取得某个时间点的备份,只有以下两种情况

(i)同一时刻取出所有数据,需要添加--single-transaction选项

root@localhost:mysql>mysqldump--single-transactiondbname

(ii)是数据库数据处于静止状态,添加--lock-all-tables选项

2生成特定格式的纯文本备份数据文件

root@localhost:mysql>select*INTOoutfile'dump.txt'fieldsterminatedby','optionallyenclosedby'"'linesterminatedby'\n'fromtableName;

或者

root@localhost:mysql>mysqldump-uroot-proot-T/D:/mysqldumptesttest_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=pwdtest\--fields-enclosed-by=\"--fields-terminated-by=,/tmp/test_outfile.txt

或者

loaddatainfile'/tmp/test_outfile.txt'intotabletest_outfilefieldsterminatedby'"'enclosedby',';

引用
物理备份:

1.MyISAM储存引擎的物理备份:

root@localhost:mysql>mysqlhotcopydb_namenew_db_name

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

相关推荐