常用命令

超时时间设置

查看mysql server超时时间:

msyql> show global variables like '%timeout%';

设置mysql server超时时间(以秒为单位):

msyql> set global wait_timeout=10;
msyql> set global interactive_timeout=10;

添加,更新,删除表结构字段

alter table table_name add column column_name tinyint(1) not null default '0';
alter table table_name modify(change) column column_name varchar(39) not null;
alter table table_name drop column column_name;

设置索引,自增

CREATE INDEX index_name ON table_name(column_name); //创建普通索引
alter table table_name auto_increment = x ;
alter table table_name add primary key (column_name);
alter table table_name modify priceid int(11) auto_increment;

复制表结构

CREATE TABLE new_table LIKE old_table;

导入数据库

方法一:

mysql>use db_name;//选择数据库
mysql>set names utf8;//设置数据库编码
mysql>source /tmp/abc.sql;//导入数据(注意sql文件的路径)

方法二:

mysql -uroot -p'pwd' dbname < dbname.sql

导出结构和数据

导出所有数据库

mysqldump -uroot -p --all-databases > bak.sql

导出db1、db2两个数据库的所有数据

mysqldump -uroot -p --databases db1 db2 > bak.sql

导出db1中的a1、a2表

mysqldump -uroot -p --databases db1 --tables a1 a2 > bak.sql

导出制定表只能针对一个数据库进行导出,且导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据

条件导出

导出db1表a1中id=1的数据

mysqldump -uroot -p --databases db1 --tables a1 --where='id=1' > bak.sql

如果多个表的条件相同可以一次性导出多个表

只导出表结构不导出数据,--no-data

mysqldump -uroot -p --no-data --databases db1 > bak.sql

跨服务器导出导入数据

mysqldump --host=h1 -uroot -ppwd --databases db1 |mysql --host=h2 -uroot -ppwd db2

将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错

mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test 

加上-C参数可以启用压缩传递

压缩备份

#压缩备份
mysqldump -uroot -p -P3306 -q -Q --set-gtid-purged=OFF --default-character-set=utf8 --hex-blob --skip-lock-tables --databases abc 2>/abc.err |gzip >/abc.sql.gz
#还原
gunzip -c abc.sql.gz |mysql -uroot -p -vvv -P3306 --default-character-set=utf8 abc 1> abc.log 2>abc.err

查看用户权限

show grants;//查看当前用户(自己)权限
show grants for user@localhost;//查看其他 MySQL 用户权限

授权用户权限

grant all on *.* to 'root'@'%' [identified by 'yourpassword'];
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.1' IDENTIFIED BY 'newpwd' WITH GRANT OPTION;

新建utf8库

CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

新建用户并授权库

create user 'test'@'%' identified by '123456';
CREATE USER 'root123'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123';

刷新权限

flush privileges;
Last Updated:
Contributors: huangyanfu