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数据库名>文件名

相关推荐