标签:
MySQL常见命令总结及资料汇总(资料链接在最后)
一、服务启动与停止命令
net start mysql (启动服务)
net stop mysql (终止服务)
二、登录登出命令
mysql -u用户名 -p密码 -h连接的主机IP -p端口号 (登录)
exit、quit(登出)
三、修改密码命令
1、登录mysql;
2、use mysql;
3、update user set password=PASSWORD(‘新密码‘) where user=‘用户名‘;
4、flush privileges;#更新权限
5、quit;#退出
四、增加新用户
1、 首先以root用户连入Mysql
2、 grant 权限 on数据库名 to用户名@登录主机 identified by“密码”;
3、 flush privileges; 更新权限
----------------------------------------------------------------------------------------
常见权限,用户管理命令权限及详解可参看博客http://www.toxingwang.com/database/mysql/1468.html
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
----------------------------------------------------------------------------------------
五、数据库基本操作
show databases; (显示数据库)
use 数据库名; (使用数据库)
show tables; (显示表)
describe 表名; (显示表结构)
create database 数据库名;(建数据库)
drop database 数据库名;(删除数据库)
create table 表名(定义列);(建表)
drop table 表名;(删除表)
update 表名 set字段=新值,... where条件 (修改表中数据)
alter table 表名 add字段类型其他;(在表中增加字段)
rename table 原表名 to新表名; (更改表名)
update 表名 set字段名 =新内容
update 表名 set字段名 = replace(字段名, ‘旧内容‘, ‘新内容‘);(更新字段内容)
insert into <表名> values(字段值,字段值,……),……;(插入数据)
delete from 表名 where表达式 (删除表中数据)
六、状态查看命令(Mysql运行状态及调优详解可参看博客http://www.cnblogs.com/gzgccsu/archive/2013/01/23/2873579.html)
Show status; (查看Mysql运行状态)
Show processlist; (查看哪些线程正在运行,前100条)
Show full processlist; (查看哪些线程正在运行,全部)
Show open tables; (查看那些表是打开的,可查看表是否被线程使用)
Show status like ‘%lock%’;(查看服务器状态)
Show engine innodb status\G; (查看InnoDB引擎运行时信息)
Show variables like‘%timeout%’;(查看服务器配置参数)
----------------------------------------------------------------------------------------------------------------
state列具体释义:
Checking table 正在检查数据表(这是自动的)。
Closing tables 正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快 的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处
于重负中。
Connect Out 复制从服务器正在连接主服务器。
Copying to tmp table on disk 由于临时结果集大于 tmp_table_size,正在将临时表从内存存储转为磁盘存储以
此节省内存。
Creating tmp table 正在创建临时表以存放部分查询结果。
deleting from main table 服务器正在执行多表删除中的第一部分,刚删除第一个表。
deleting from reference tables 服务器正在执行多表删除中的第二部分,正在删除其他表的记录。
Flushing tables 正在执行 FLUSH TABLES 等待其他线程关闭数据表。
Killed 发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下
一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
Locked 被其他查询锁住了。
Sending data 正在处理 SELECT 查询的记录,同时正在把结果发送给客户端。
Sorting for group 正在为 GROUP BY 做排序。
Sorting for order 正在为 ORDER BY 做排序。
Opening tables 这个过程应该会很快,除非受到其他因素的干扰。例如,在执 ALTER TABLE 或
LOCK TABLE 语句行完以前,数据表无法被其他线程打开。 正尝试打开一个表
Removing duplicates 正在执行一个 SELECT DISTINCT 方式的查询,但是MySQL无法在前一个阶段
优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
Reopen table 获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁, 关闭数据表,正尝试重新打开数据表。
Repair by sorting 修复指令正在排序以创建索引。
Repair with keycache 修复指令正在利用索引缓存一个一个地创建新索引。它会比上一条慢些。
Searching rows for update 正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之
前就完成了。
Sleeping 正在等待客户端发送新请求.
System lock 正在等待取得一个外部的系统锁。如果当前没有运行多个 mysqld 服务器同时请
求同一个表,那么可以通过增加 –skip-external-locking参数来禁止外部系统锁。
Upgrading lock INSERT DELAYED 正在尝试取得一个锁表以插入新记录。
Updating 正在搜索匹配的记录,并且修改它们。
User Lock 正在等待 GET_LOCK()。
Waiting for tables 该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。
然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。
----------------------------------------------------------------------------------------------------------------
七、导出和导入数据、备份与恢复(博文链接http://blog.chinaunix.net/uid-16844903-id-3411118.html)
(注:‘省略’代表着如下固定参数:-routines代表备份函数与存储过程
-u$USER -p$PASSWD -h127.0.0.1 -P3306 —routines—default-character-set=utf8)
————————导出、备份————————
1、 导出全部数据库备份(-A全库备份)
mysqldump 省略—lock-all-tables —add-drop-database -A > db.all.sql
2、 导出指定数据库到本地目录,例如mysql数据库(--databases数据库名)
mysqldump 省略 --databases mysql > db.sql
3、 导出指定数据库的指定表到本地目录,例如mysql数据库的user表(--tables数据库名表名)
mysqldump 省略 --tables mysql user> db.table.sql
4、 导出指定数据库的指定表(仅数据)到本地目录,例如mysql数据库的user表,带过滤条件
mysqldump 省略 --no-create-db --no-create-info --tables mysql user --where="host=‘localhost‘"> db.table.sql
5、导出某个数据库的表结构(--no-data不备份数据)
mysqldump 省略 --no-data --databases mysql > db.nodata.sql
6、导出某个sql查询的数据以txt文件形式存储到到本地的目录(各数据值之间用"制表符"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 --skip-column-names -B -e ‘select user,host,password from mysql.user;‘ > mysql_user.txt
7、导出某个sql查询的数据以txt文件形式存储到到MySQL服务器,登录MySQL,将默认的制表符换成逗号.(适应csv格式文件),指定的路径,mysql要有写的权限。最好用tmp目录,文件用完之后,再删除!
SELECT user,host,password FROM mysql.user INTO OUTFILE ‘/tmp/mysql_user.csv‘ FIELDS TERMINATED BY ‘,‘;
————————导入、恢复————————
1、 恢复全库数据到MySQL,因为包含mysql库的权限表,导入完成需要执行FLUSH PRIVILEGES;命令
第一种方法:
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 < db.all.sql
第二种方法:
登录MySQL,执行source命令,后面的文件名要用绝对路径.
......
mysql> source /tmp/db.all.sql;
2、恢复某个库的数据(mysql库的user表)
第一种方法:
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8 mysql < db.table.sql
第二种方法:
登录MySQL,执行source命令,后面的文件名要用绝对路径.
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> source /tmp/db.table.sql;
3、恢复MySQL服务器上面的txt格式文件(需要FILE权限,各数据值之间用"制表符"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> LOAD DATA INFILE ‘/tmp/mysql_user.txt‘ INTO TABLE user ;
4、恢复MySQL服务器上面的csv格式文件(需要FILE权限,各数据值之间用"逗号"分隔)
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
mysql> LOAD DATA INFILE ‘/tmp/mysql_user.csv‘ INTO TABLE user FIELDS TERMINATED BY ‘,‘;
5、恢复本地的txt或csv文件到MySQL
mysql -u$USER -p$PASSWD -h127.0.0.1 -P3306 --default-character-set=utf8
......
mysql> use mysql;
# txt
mysql> LOAD DATA LOCAL INFILE ‘/tmp/mysql_user.txt‘ INTO TABLE user;
# csv
mysql> LOAD DATA LOCAL INFILE ‘/tmp/mysql_user.csv‘ INTO TABLE user FIELDS TERMINATED BY ‘,‘;
----------------------------------------------------------------------------------------------------------------
关于mysql参数
--skip-column-names 不显示数据列的名字
-B 以批处理的方式运行mysql程序.查询结果将显示为制表符间隔格式.
-e 执行命令后,退出
关于mysqldump参数
-A 全库备份
--routines 备份存储过程和函数
--default-character-set=utf8 设置字符集
--lock-all-tables 全局一致性锁
--add-drop-database 在每次执行建表语句之前,先执行DROP TABLE IF EXIST语句
--no-create-db 不输出CREATE DATABASE语句
--no-create-info 不输出CREATE TABLE语句
--databases 将后面的参数都解析为库名
--tables 第一个参数为库名后续为表名
关于LOAD DATA语法
如果LOAD DATA语句不带LOCAL关键字,就在MySQL的服务器上直接读取文件,且要具有FILE权限.
如果带LOCAL关键字,就在客户端本地读取数据文件,通过网络传到MySQL.
LOAD DATA语句,同样被记录到binlog,不过是内部的机制.
----------------------------------------------------------------------------------------------------------------
八、mysqladmin指令(所有命令可以被缩短为其唯一的前缀)
create databasename (创建一个新数据库)
drop databasename (删除一个数据库及其所有表)
Extended-status (给出服务器的一个扩展状态消息)
Flush-hosts (洗掉所有缓存的主机)
Flush-logs (洗掉所有日志)
Flush-tables (洗掉所有表 )
Flush-privileges (再次装载授权表(同reload) )
kill id,id,... (杀死MySQL线程)
Password (新口令,将老口令改为新口令)
Ping (检查mysqld是否活着 )
Processlist (显示服务其中活跃线程列表)
Reload (重载授权表 )
Refresh (洗掉所有表并关闭和打开日志文件)
Shutdown (关掉服务器)
Status (给出服务器的简短状态消息)
Variables (打印出可用变量)
Version (得到服务器的版本信息)
九、Mysqld命令详解参看博客http://blog.itpub.net/29500582/viewspace-1373451/
十、Mysql日志管理详解参看博客http://www.toxingwang.com/database/mysql/1483.html
十一、Mysql索引详解参看博客http://blog.csdn.net/zhangliangzi/article/details/51366345
十二、Mysql事务详解参看博客http://www.toxingwang.com/database/mysql/1454.html
十三、Mysql锁定机制详解参看博客http://www.toxingwang.com/database/mysql/1454.html
十四、常见sql指令可参看《mysql必知必会》
标签:
原文地址:http://blog.csdn.net/zhangliangzi/article/details/51886854