存储引擎的使用
数据库中的各表均被(在创建表时)指定的存储引擎来处理。
服务器可用的引擎依赖于以下因素:
- MySQL的版本
- 服务器在开发时如何被配置
- 启动选项
为了解当前服务器中有哪些存储引擎可用,可使用SHOW ENGINES语句:
mysql> show ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.37 sec)
常用的存储引擎
MyISAM存储引擎
MyISAM存储引擎是MySQL最常用的引擎。
它管理的表具有以下特征:
1、使用三个文件表示每个表:
- 格式文件 — 存储表结构的定义(mytable.frm)
- 数据文件 — 存储表行的内容(mytable.MYD)
- 索引文件 — 存储表上索引(mytable.MYI)
2、灵活的AUTO_INCREMENT字段处理
3、可被转换为压缩、只读表来节省空间
InnoDB存储引擎
- InnoDB存储引擎是MySQL的缺省引擎。
- 它管理的表具有下列主要特征:
- 每个InnoDB表在数据库目录中以.frm格式文件表示
- InnoDB表空间tablespace被用于存储表的内容
- 提供一组用来记录事务性活动的日志文件
- 用COMMIT(提交)、SAVEPOINT及ROLLBACK(回滚)支持事务处理
- 提供全ACID兼容
- 在MySQL服务器崩溃后提供自动恢复
- 多版本(MVCC)和行级锁定
- 支持外键及引用的完整性,包括级联删除和更新
DBA命令
新建用户
CREATE USER username IDENTIFIED BY 'password';
说明:username你将创建的用户名, password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密
授权
grant all privileges on dbname.tbname to 'username'@'login ip' identified by 'password' with grant option;
- dbname=*表示所有数据库
- tbname=*表示所有表
- login ip=%表示任何ip
- password为空,表示不需要密码即可登录
- with grant option; 表示该用户还可以授权给其他用户
细粒度授权
首先以root用户进入mysql,然后键入命令:grant select,insert,update,delete on *.* to p361 @localhost Identified by "123";
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为 "%" 。
粗粒度授权
GRANT ALL PRIVILEGES ON *.* TO 'p361'@'%' Identified by "123";
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'p361'@'%' Identified by "123"
WITH GRANT OPTION
;
privileges包括:
- alter:修改数据库的表
- create:创建新的数据库或表
- delete:删除表数据
- drop:删除数据库/表
- index:创建/删除索引
- insert:添加表数据
- select:查询表数据
- update:更新表数据
- all:允许任何操作
- usage:只允许登录
回收权限
revoke privileges on dbname[.tbname] from username;或
revoke
all privileges on *.*
from
p361;
导出
导出整个数据库
mysqldump -u root -p db_name > test_db.sql
导出指定库下的指定表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
导入
登录MYSQL数据库管理系统之后执行:source D:\ bjpowernode.sql