外观
常用命令
约 797 字大约 3 分钟
2025-06-19
超时时间设置
查看超时时间
SHOW GLOBAL VARIABLES LIKE '%timeout%';设置超时时间
SET GLOBAL wait_timeout = 10;
SET GLOBAL interactive_timeout = 10;注意:
SET GLOBAL设置的超时时间在当前连接断开后失效,若要永久生效需修改my.cnf配置文件。
表结构操作
添加字段
ALTER TABLE table_name ADD COLUMN column_name TINYINT(1) NOT NULL DEFAULT 0;修改字段
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(39) NOT NULL;
-- 或重命名字段
ALTER TABLE table_name CHANGE old_column_name new_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 = 1000;
-- 设置主键
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;
-- 复制表结构和数据
CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;导入数据库
方法一:source 命令
USE db_name;
SET NAMES utf8mb4;
SOURCE /tmp/abc.sql;注意:推荐使用
utf8mb4编码以支持 emoji 等特殊字符。
方法二:命令行导入
mysql -u root -p'db_password' db_name < dbname.sql导出数据库
导出所有数据库
mysqldump -u root -p --all-databases > all_databases.sql导出指定数据库
# 导出单个数据库
mysqldump -u root -p db_name > db_name.sql
# 导出多个数据库
mysqldump -u root -p --databases db1 db2 > bak.sql导出指定表
# 导出指定库中的指定表
mysqldump -u root -p --databases db1 --tables table1 table2 > tables.sql注意:导出指定表时只能针对一个数据库,导出的文件中不包含创建数据库的语句。
条件导出
# 导出满足条件的数据
mysqldump -u root -p --databases db1 --tables table1 --where="id=1" > partial.sql只导出表结构
mysqldump -u root -p --no-data --databases db_name > structure.sql跨服务器导出导入
# 方式一:管道传输
mysqldump -h host1 -u root -ppassword db_name | mysql -h host2 -u root -ppassword db_name
# 方式二:压缩传输
mysqldump -h 192.168.80.137 -u root -proot -C --databases test | mysql -h 192.168.80.133 -u root -proot test
-C参数启用压缩传输,适用于跨网络大数据量迁移。目标数据库需提前创建。
压缩备份
# 压缩备份
mysqldump -u root -p -P3306 -q -Q --set-gtid-purged=OFF \
--default-character-set=utf8mb4 --hex-blob \
--skip-lock-tables --databases db_name 2>error.log | gzip > backup.sql.gz
# 还原
gunzip -c backup.sql.gz | mysql -u root -p -P3306 --default-character-set=utf8mb4 db_name 1>restore.log 2>error.log用户管理
查看用户权限
-- 查看当前用户权限
SHOW GRANTS;
-- 查看指定用户权限
SHOW GRANTS FOR 'username'@'localhost';授权用户权限
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword';
-- 授予指定IP访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.1' IDENTIFIED BY 'newpwd' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;创建新用户
-- MySQL 5.7 及之前版本
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
-- MySQL 8.0+ 推荐使用
CREATE USER 'root123'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123';删除用户
DROP USER 'username'@'host';创建数据库
-- 创建 UTF8MB4 编码数据库(推荐)
CREATE DATABASE IF NOT EXISTS `test_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;推荐使用
utf8mb4而非utf8,utf8mb4才是 MySQL 真正的 UTF-8 编码,支持存储 emoji 等特殊字符。
