----------------------------数据库的操作--------------------------------------------
创建数据库
CREATE DATABASE IF NOT EXISTS [数据库名] DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
修改数据库字符集:
alter database [数据库名] character set utf8;
删除数据库
drop database [数据库名]
创建用户
CREATE USER '[用户名]'@'%' IDENTIFIED BY '[用户密码]';
授权该用户访问数据库的所有权限
GRANT USAGE ON *.* TO '[用户名]'@'%' IDENTIFIED BY '[用户密码]' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT ALL PRIVILEGES ON `[数据库名]`.* TO '[用户名]'@'%';
刷新权限
flush privileges;
删除mysql用户
DROP USER '[用户名]'@'%';
删除用户原来的所有权限
REVOKE ALL PRIVILEGES ON `[数据库名]`.* FROM '[用户名]'@'%';
赋予新的只读权限
GRANT SELECT ON `[数据库名]`.* TO '[用户名]'@'%';
备份数据库:
mysqldump -h[主机IP] -u[用户名] -p[密码] [数据库名] > [保存路径]
mysqldump -uroot -hlocalhost -p123456 db_test > "/home/www/db.sql";
显示所有数据库
show databases
查看数据库碎片:
SELECT t.TABLE_SCHEMA, t.TABLE_NAME,t.TABLE_ROWS,t.DATA_LENGTH,t.INDEX_LENGTH,concat(round(t.DATA_FREE / 1024 / 1024, 2), 'M') AS datafree FROM information_schema.tables t WHERE t.TABLE_SCHEMA = '数据库名';
----------------------------表的操作--------------------------------------------
创建表
DROP TABLE IF EXISTS `[表名]`;
CREATE TABLE IF NOT EXISTS `[表名]` (
`id` bigint(15) unsigned NOT NULL auto_increment COMMENT '自增ID',
`user_name` varchar(30) NOT NULL default '' COMMENT '账号',
`password` varchar(50) NOT NULL default '' COMMENT '密码',
`create_date` int(10) unsigned NOT NULL default '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表' AUTO_INCREMENT=1 ;
修改表名
RENAME TABLE [原表名] TO [新表名];
添加字段
ALTER TABLE [表名] ADD [字段名] INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '[备注]'
修改字段名
ALTER TABLE [表名] CHANGE [原字段] [新字段] INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '[备注]'
添加索引
ALTER TABLE [表名] ADD INDEX ([索引字段名])
删除索引
ALTER TABLE [表名] DROP INDEX [索引名]
创建唯一索引
ALTER TABLE [表名] ADD UNIQUE([索引名])
清空表
TRUNCATE TABLE [表名]
删除表
DROP TABLE [表名]
碎片整理
optimize table [表1],[表2]
显示所有表
show tables
查看数据库中所有表的记录数
use information_schema;
select table_name,table_rows from tables where TABLE_SCHEMA = 'db_test';
创建一张临时表 并插入数据
create temporary table [表1] select * from [表2];
把数据批量插入到另外一张表
insert into [表1](f1,f2) select v1,v2 from [表2]
查看表字段
show columns from [表名];
查看表结构
show create table [表名];
查看表索引
show index from [表名];
导入sql
source /root/db.sql;
----------------------------数据库管理维护--------------------------------------------
查看状态
show status like '%abc%';
查看参数的设置情况
show variables like '%abc%';
状态名 |
作用域 |
详细解释 |
Aborted_clients |
Global |
由于客户端没有正确关闭连接导致客户端终止而中断的连接数 |
Aborted_connects |
Global |
试图连接到MySQL服务器而失败的连接数 |
Binlog_cache_disk_use |
Global |
使用临时二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量 |
Binlog_cache_use |
Global |
使用临时二进制日志缓存的事务数量 |
Bytes_received |
Both |
从所有客户端接收到的字节数。 |
Bytes_sent |
Both |
发送给所有客户端的字节数。 |
com* |
|
各种数据库操作的数量 |
Compression |
Session |
客户端与服务器之间只否启用压缩协议 |
Connections |
Global |
试图连接到(不管是否成功)MySQL服务器的连接数 |
Created_tmp_disk_tables |
Both |
服务器执行语句时在硬盘上自动创建的临时表的数量 |
Created_tmp_files |
Global |
mysqld已经创建的临时文件的数量 |
Created_tmp_tables |
Both |
服务器执行语句时自动创建的内存中的临时表的数量。如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时 表基于内存而不基于硬盘 |
Delayed_errors |
Global |
用INSERT DELAYED写的出现错误的行数(可能为duplicate key)。 |
Delayed_insert_threads |
Global |
使用的INSERT DELAYED处理器线程数。 |
Delayed_writes |
Global |
写入的INSERT DELAYED行数 |
Flush_commands |
Global |
执行的FLUSH语句数。 |
Handler_commit |
Both |
内部提交语句数 |
Handler_delete |
Both |
行从表中删除的次数。 |
Handler_discover |
Both |
MySQL服务器可以问NDB CLUSTER存储引擎是否知道某一名字的表。这被称作发现。Handler_discover说明通过该方法发现的次数。 |
Handler_prepare |
Both |
A counter for the prepare phase of two-phase commit operations. |
Handler_read_first |
Both |
索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描;例如,SELECT col1 FROM foo,假定col1有索引。 |
Handler_read_key |
Both |
根据键读一行的请求数。如果较高,说明查询和表的索引正确。 |
Handler_read_next |
Both |
按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。 |
Handler_read_prev |
Both |
按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。 |
Handler_read_rnd |
Both |
根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。 |
Handler_read_rnd_next |
Both |
在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。 |
Handler_rollback |
Both |
内部ROLLBACK语句的数量。 |
Handler_savepoint |
Both |
在一个存储引擎放置一个保存点的请求数量。 |
Handler_savepoint_rollback |
Both |
在一个存储引擎的要求回滚到一个保存点数目。 |
Handler_update |
Both |
在表内更新一行的请求数。 |
Handler_write |
Both |
在表内插入一行的请求数。 |
Innodb_buffer_pool_pages_data |
Global |
包含数据的页数(脏或干净)。 |
Innodb_buffer_pool_pages_dirty |
Global |
当前的脏页数。 |
Innodb_buffer_pool_pages_flushed |
Global |
要求清空的缓冲池页数 |
Innodb_buffer_pool_pages_free |
Global |
空页数。 |
Innodb_buffer_pool_pages_latched |
Global |
在InnoDB缓冲池中锁定的页数。这是当前正读或写或由于其它原因不能清空或删除的页数。 |
Innodb_buffer_pool_pages_misc |
Global |
忙的页数,因为它们已经被分配优先用作管理,例如行锁定或适用的哈希索引。该值还可以计算为Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data。 |
Innodb_buffer_pool_pages_total |
Global |
缓冲池总大小(页数)。 |
Innodb_buffer_pool_read_ahead_rnd |
Global |
InnoDB初始化的“随机”read-aheads数。当查询以随机顺序扫描表的一大部分时发生。 |
Innodb_buffer_pool_read_ahead_seq |
Global |
InnoDB初始化的顺序read-aheads数。当InnoDB执行顺序全表扫描时发生。 |
Innodb_buffer_pool_read_requests |
Global |
InnoDB已经完成的逻辑读请求数。 |
Innodb_buffer_pool_reads |
Global |
不能满足InnoDB必须单页读取的缓冲池中的逻辑读数量。 |
Innodb_buffer_pool_wait_free |
Global |
一般情况,通过后台向InnoDB缓冲池写。但是,如果需要读或创建页,并且没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记数。如果已经适当设置缓冲池大小,该值应小。 |
Innodb_buffer_pool_write_requests |
Global |
向InnoDB缓冲池的写数量。 |
Innodb_data_fsyncs |
Global |
fsync()操作数。 |
Innodb_data_pending_fsyncs |
Global |
当前挂起的fsync()操作数。 |
Innodb_data_pending_reads |
Global |
当前挂起的读数。 |
Innodb_data_pending_writes |
Global |
当前挂起的写数。 |
Innodb_data_read |
Global |
至此已经读取的数据数量(字节)。 |
Innodb_data_reads |
Global |
数据读总数量。 |
Innodb_data_writes |
Global |
数据写总数量。 |
Innodb_data_written |
Global |
至此已经写入的数据量(字节)。 |
Innodb_dblwr_pages_written |
Global |
已经执行的双写操作数量 |
Innodb_dblwr_writes |
Global |
双写操作已经写好的页数 |
Innodb_log_waits |
Global |
我们必须等待的时间,因为日志缓冲区太小,我们在继续前必须先等待对它清空 |
|
||
Innodb_log_write_requests |
Global |
日志写请求数。 |
Innodb_log_writes |
Global |
向日志文件的物理写数量。 |
Innodb_os_log_fsyncs |
Global |
向日志文件完成的fsync()写数量。 |
Innodb_os_log_pending_fsyncs |
Global |
挂起的日志文件fsync()操作数量。 |
Innodb_os_log_pending_writes |
Global |
挂起的日志文件写操作 |
Innodb_os_log_written |
Global |
写入日志文件的字节数。 |