常用命令
超时时间设置
查看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;