在日常开发与运维中,MySQL 是最常用的数据库之一。本文整理了 MySQL 常见的管理、查询、备份、权限与主从相关命令,便于快速查阅。
一、MySQL 登录与退出
1、 本地登录
参数说明:
-u:指定用户名
-p:提示输入密码
root:登录用户
2、指定主机和端口
mysql -h 127.0.0.1 -P 3306 -uroot -p
|
参数说明:
-h:数据库主机地址
-P:端口号(默认 3306)
-u:用户名
-p:密码
3、使用 socket 登录
mysql -uroot -p -S /tmp/mysql.sock
|
参数说明:
4、 退出 MySQL
或:
二、数据库管理
1、 查看数据库
2、创建数据库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8mb4;
|
参数说明:
db_name:数据库名称
DEFAULT CHARACTER SET:默认字符集
utf8mb4:支持完整 UTF-8(推荐)
3、删除数据库
4、 选择数据库
三、数据表管理
1、 查看当前数据库所有表
2、查看表结构
或:
SHOW CREATE TABLE table_name;
|
3、创建表示例
CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
|
参数说明:
PRIMARY KEY:主键
AUTO_INCREMENT:自增
NOT NULL:不能为空
DEFAULT:默认值
4、 修改表结构
添加字段:
ALTER TABLE user ADD email VARCHAR(100);
|
删除字段:
ALTER TABLE user DROP email;
|
修改字段类型:
ALTER TABLE user MODIFY name VARCHAR(100);
|
5、 删除表
四、数据操作(CRUD)
1、 插入数据
INSERT INTO user (name, age) VALUES ('Tom', 18);
|
批量插入:
INSERT INTO user (name, age) VALUES ('Tom', 18), ('Jerry', 20);
|
2、查询数据
查询全部:
条件查询:
SELECT * FROM user WHERE age > 18;
|
排序:
SELECT * FROM user ORDER BY age DESC;
|
分页:
SELECT * FROM user LIMIT 10 OFFSET 0;
|
参数说明:
3、更新数据
UPDATE user SET age = 25 WHERE id = 1;
|
⚠️ 不加 WHERE 会更新整张表。
4、 删除数据
DELETE FROM user WHERE id = 1;
|
清空表(保留结构):
五、用户管理(创建与修改统一版)
MySQL 8.0 默认认证插件:
兼容旧系统可使用:
1、 创建用户
①基本创建
CREATE USER 'test'@'%' IDENTIFIED BY 'password123';
|
参数说明:
'test':用户名
'%':允许连接的主机
IDENTIFIED BY:设置密码
②创建并指定 native 插件
CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'password123';
|
参数说明:
IDENTIFIED WITH:指定认证插件
mysql_native_password:传统加密方式
BY:设置密码
③创建并设置资源限制
CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'password123' WITH MAX_QUERIES_PER_HOUR 1000 MAX_CONNECTIONS_PER_HOUR 100 MAX_UPDATES_PER_HOUR 500 MAX_USER_CONNECTIONS 10;
|
参数说明:
MAX_QUERIES_PER_HOUR:每小时最大查询数
MAX_CONNECTIONS_PER_HOUR:每小时连接次数
MAX_UPDATES_PER_HOUR:更新次数
MAX_USER_CONNECTIONS:最大同时连接数
2、修改用户
①修改密码
ALTER USER 'test'@'%' IDENTIFIED BY 'newpassword';
|
②修改插件并重置密码
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword';
|
③ 修改资源限制
ALTER USER 'test'@'%' WITH MAX_USER_CONNECTIONS 20;
|
④设置密码过期策略
永不过期:
ALTER USER 'test'@'%' PASSWORD EXPIRE NEVER;
|
90 天过期:
ALTER USER 'test'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
|
⑤锁定 / 解锁账户
锁定:
ALTER USER 'test'@'%' ACCOUNT LOCK;
|
解锁:
ALTER USER 'test'@'%' ACCOUNT UNLOCK;
|
3、授权用户
GRANT ALL PRIVILEGES ON db_name.* TO 'test'@'%';
|
参数说明:
ALL PRIVILEGES:全部权限
db_name.*:数据库下所有表
刷新权限:
4、 查看用户信息
查看插件:
SELECT user, host, plugin FROM mysql.user;
|
查看权限:
SHOW GRANTS FOR 'test'@'%';
|
六、索引管理
创建索引:
CREATE INDEX idx_name ON user(name);
|
创建唯一索引:
CREATE UNIQUE INDEX idx_email ON user(email);
|
删除索引:
DROP INDEX idx_name ON user;
|
查看索引:
七、事务控制
START TRANSACTION; COMMIT; ROLLBACK;
|
说明:
START TRANSACTION:开启事务
COMMIT:提交
ROLLBACK:回滚
八、备份与恢复
备份数据库:
mysqldump -uroot -p db_name > db.sql
|
参数说明:
mysqldump:备份工具
db_name:数据库名
>:重定向到文件
恢复数据库:
mysql -uroot -p db_name < db.sql
|
九、主从复制命令
主库:
从库:
启动从库:
停止从库:
十、MySQL 服务管理(Linux)
启动:
停止:
重启:
查看状态:
十一、常见排查命令
查看当前连接:
查看最大连接数:
SHOW VARIABLES LIKE 'max_connections';
|
查看慢查询是否开启:
SHOW VARIABLES LIKE 'slow_query_log';
|
查看数据库大小:
SELECT table_schema AS db, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb FROM information_schema.tables GROUP BY table_schema;
|