MySQL 常用命令

根据个人使用经验记录常用的 MySQL 命令作为备忘清单。

MySQL

命令 描述
mysql -h localhost -u root -P 3306 -p 连接数据库

数据库

命令 描述
SHOW DATABASES; 列出数据库
CREATE DATABASE IF NOT EXISTS `db_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 创建数据库
DROP DATABASE `db_name`; 删除数据库
SHOW CREATE DATABASE `db_name`; 查看数据库的创建信息
USE `db_name`; 选择数据库

命令 描述
SHOW TABLES; 列出表
CREATE TABLE `table_name` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键 id',
`uid` varchar(20) NOT NULL DEFAULT '' COMMENT 'uid',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态: 0 无效 1 有效',
`gmt_create` bigint(13) unsigned NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `unq_idx_uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='表的描述';
创建表
DROP TABLE `table_name`; 删除表
SHOW CREATE TABLE `table_name`; 查看表的创建信息
DESC `table_name`; 查看表的字段
ALTER TABLE `table_name` RENAME `new_table_name`; 查看表的字段
ALTER TABLE `table_name` MODIFY `field_name` field_type; 修改字段类型
ALTER TABLE `table_name` ADD `field_name` field_type AFTER `another_field_name`; 添加字段
ALTER TABLE `table_name` DROP `field_name`; 删除字段
ALTER TABLE `table_name` CHANGE `field_name` `new_field_name` new_field_type; 修改字段名称

增删改查

命令 描述
INSERT INTO `table_name` (field_name1, field_name2) VALUES (value1, value2); 新增
SELECT * FROM `table_name` WHERE `field_name` = value; 查询
UPDATE `table_name` SET `field_name1` = value1 WHERE `field_name2` = value2; 更新
DELETE FROM `table_name` WHERE `field_name` = value; 删除
TRUNCATE `table_name`; 清空

事务

命令 描述
BEGIN;
START TRANSACTION;
开启事务
START TRANSACTION WITH CONSISTENT SNAPSHOT; 开启事务并立即创建 read view
ROLLBACK; 回滚事务
COMMIT; 提交事务
COMMIT WORK AND CHAIN; 提交事务并开启下一个事务(减少一次命令交互)
SELECT @@autocommit; 查看 autocommit,默认 1
SET @@autocommit = 0; 设置为手动提交
SHOW VARIABLES LIKE 'transaction_isolation';
SHOW VARIABLES LIKE 'tx_isolation';
查看隔离级别
SET transaction_isolation = 'READ-UNCOMMITTED'|'READ-COMMITTED'|'REPEATABLE-READ'|'SERIALIZABLE';
SET SESSION transaction isolation level READ UNCOMMITTED|READ COMMITTED|REPEATABLE-READ|SERIALIZABLE;
设置隔离级别
SELECT * FROM information_schema.innodb_trx WHERE TIME_TO_SEC(timediff(now(), trx_started)) > 60; 查找持续 60s 以上的事务

用户

命令 描述
CREATE USER 'username'@'ip' IDENTIFIED BY 'password'; 创建用户
GRANT ALL ON db_name.* TO 'username'@'ip'; 授权
FLUSH PRIVILEGES; 刷新权限
REVOKE ALL ON db_name.* FROM 'username'@'ip'; 取消授权
DROP USER 'username'@'ip'; 删除用户
SELECT * FROM mysql.user; 查询用户列表
ALTER USER 'username'@'ip' IDENTIFIED BY '123456'; 修改用户密码
SHOW VARIABLES LIKE 'default_authentication_plugin'; 查询默认验证插件

主从同步

命令 描述
GRANT REPLICATION SLAVE ON '*.*' TO 'username'@'ip'; 授予主从同步权限
SHOW MASTER STATUS; 查询 MASTER 状态
SHOW SLAVE STATUS; 查询 SLAVE 状态
CHANGE MASTER TO MASTER_HOST='h', MASTER_PORT=3306, MASTER_USER='u', MASTER_PASSWORD='p', MASTER_LOG_FILE='f', MASTER_LOG_POS=n;
CHANGE REPLICATION SOURCE TO SOURCE_HOST='h', SOURCE_PORT=3306, SOURCE_USER='u', SOURCE_PASSWORD='p', SOURCE_LOG_FILE='f', SOURCE_LOG_POS=n;
设置主从同步
START SLAVE;
START REPLICA;
启动主从同步
STOP SLAVE;
STOP REPLICA;
停止主从同步

变量

全局变量、会话变量、用户变量、局部变量。

命令 描述
SHOW [GLOBAL|SESSION] VARIABLES; 查看全部变量
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
SELECT @@[GLOBAL|SESSION].variable_name
查看单个变量
SET [GLOBAL|SESSION] variable_name = value;
SET @@[GLOBAL|SESSION].variable_name = value
设置单个变量

SESSION 可以省略。