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)如果备份是以特殊分割符分割的纯数据文本文件