mysql常用命令
FLUSHPRIVILEGES
showvariableslike'max_connections';//查询最大连接数
updateusersetPassword=password('zqgame')whereUser='username'//修改mysql用户密码
insertintomysql.user(Host,User,Password)values("localhost","phplamp",password("1234"));//创建用户
flushprivileges;//刷新系统权限表
CREATEUSER'IDENTIFIEDBY'password';//创建用户
grantallprivilegesonphplampDB.*tophplamp@localhostidentifiedby'1234';///授权phplamp用户拥有phplamp数据库的所有权限。
grantselect,updateonphplampDB.*tophplamp@localhostidentifiedby'1234';//如果想指定部分权限给一用户,可以这样来写:
DELETEFROMuserWHEREUser="phplamp"andHost="localhost";//删除用户
updatemysql.usersetpassword=password('新密码')whereUser="phplamp"andHost="localhost";//修改指定用户密码。
grantallprivilegeson*.*toqnsys@localhostidentifiedby'zqgame';
导入数据过慢
mysql>mysqldump-uroot-p数据库名-e--max_allowed_packet=1048576--net_buffer_length=16384>SQL文件
如:
mysql>mysqldump-uroot-pdiscuz-e--max_allowed_packet=1048576--net_buffer_length=16384>discuz.sql
ysql>showvariableslike'max_allowed_packet';//1048576
mysql>showvariableslike'net_buffer_length';//16384
记录下参数,在导出的时候使用
mysqldump-uroot-p'123'--all-database--max_allowed_packet=1048576--net_buffer_length=16384>all.sql
然后再倒入即可。
mysqldump-uroot-pzqgame-h192.168.70.52qn_db--max_allowed_packet=1048576--net_buffer_length=16384>all.sql
查看Mysql版本是否支持分区
SHOWVARIABLESLIKE'%partition%';
创建创建range分区
Createtableprange1(idint)engine=myisam
partitionbyrange(id)(partitionpovalueslessthan(10),
partitionp1valueslessthan(20),partitionp2valueslessthan(30));
创建表PRANGE1
altertableprange1addpartition(partitionp3valueslessthan(40));
从最大值后加个分区
mysql>altertableprange1addpartition(partitionp3valueslessthan(40));
当删除了一个分区,也同时删除了该分区中所有的数据
ALTERTABLEsale_dataDROPPARTITIONp201010;
分区的合并
下面的SQL,将p201001-p201009合并为3个分区p2010Q1-p2010Q3
ALTERTABLEsale_dataREORGANIZEPARTITIONp201001,p201002,p201003,
p201004,p201005,p201006,p201007,p201008,p201009INTO(
PARTITIONp2010Q1VALUESLESSTHAN(201004),
PARTITIONp2010Q2VALUESLESSTHAN(201007),
PARTITIONp2010Q3VALUESLESSTHAN(201010)
);
分区的拆分
下面的SQL,将p2010Q1分区,拆分为s2009与s2010两个分区
创建list分区
createtableemp
(empnovarchar(20)notnull,
empnamevarchar(20),
deptnoint,
birthdatedatenotnull,
salaryint
)
partitionbylist(deptno)
(
partitionp1valuesin(10),
partitionp2valuesin(20),
partitionp3valuesin(30)
);
创建hash分区
HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE和LIST分区中,
必须明确指定一个给定的列值或列值集合应该保存在哪个分区中;而在HASH分区中,MySQL自动完成这些工作,
你所要做的只是基于将要被哈希的列值指定一个列值或表达式,以及指定被分区的表将要被分割成的分区数量。
createtableemp
(empnovarchar(20)notnull,
empnamevarchar(20),
deptnoint,
birthdatedatenotnull,
salaryint
)
partitionbyhash(year(birthdate))
partitions4;
创建key分区
按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用户定义的表达式,而KEY分区的哈希函数是由MySQL服务器提供,
服务器使用其自己内部的哈希函数,这些函数是基于与PASSWORD()一样的运算法则。“CREATETABLE...PARTITIONBYKEY”的语法规则
类似于创建一个通过HASH分区的表的规则。它们唯一的区别在于使用的关键字是KEY而不是HASH,并且KEY分区只采用一个或多个列名的一个列表。
createtableemp
(empnovarchar(20)notnull,
empnamevarchar(20),
deptnoint,
birthdatedatenotnull,
salaryint
)
partitionbykey(birthdate)
partitions4;
mysqldump-u数据库用户名-p-n-t-d-R数据库名>文件名