转自:http://my.oschina.net/u/165872/blog/78863
1、以管理员身份登录mysql
mysql -u root -p
2、选择mysql数据库
use mysql
3、创建用户并设定密码
create user 'testuser'@'localhost' identified by 'testpassword'
4、使操作生效
flush privileges
5、为用户创建数据库
create database testdb
6、为用户赋予操作数据库testdb的所有权限
grant all privileges on testdb.* to test@'%' identified by '1234';
或者GRANT ALL PRIVILEGES ON cattle.* TO 'mmzx'@'%' WITH GRANT OPTION;
7、使操作生效
flush privileges
8、用新用户登录
mysql -u test -p
9、导入导出数据
mysqldump -u root -pxx -h 192.168.1.2 dbname> dbfile_20160704.sql
mysql -u root -pxxx -h 127.0.0.1 dbname< dbfile_20160704.sql
对于一个特别特别大的表,比如表的大小超过10G甚至更大的时候,使用上面的导入语句就会出现错误:
heck the manual that corresponds to your MySQL server version for the right syntax to use near Warning: option 'max_allowed_packet': unsigned value xxxxxxxx adjusted to xxxxxx' at line 1
解决办法是: mysqldump -h 127.0.0.1 -u${user_name} -p${passwd} --extended-insert=false dbName > data_2.sql
-e, --extended-insert
使用全新多行INSERT语法,默认开启(给出更紧缩并且更快的插入语句)
使用--extended-insert=false导出的表如下图这种,每行一个insert语句。
使用--extended-insert=true导出的表如下图这种,一个很长的insert语句。
所以,如果合并insert语句,虽然效率增加了不少,大概会有3-4倍,但是每条insert语句的大小也会增大,所以,会出现max_allowed_packet超限的情况。