一句话:MySQL 用户权限、改密与 mysqldump 备份的常用命令速查表。

写在前面

部署博客或多环境联调时,经常要 建库用户、授权、改密码、导出备份。本文整理个人项目中反复用到的 SQL 与 shell 命令,便于复制执行。执行前请确认库名、主机名与权限范围,避免误授 *.* 到生产。

核心内容

查询用户

SELECT User, Host FROM mysql.user;

Host 决定从哪里可连:localhost 仅本机,% 表示任意主机(需配合防火墙与白名单)。

创建用户与授权

-- 仅本机登录
CREATE USER 'xiaoming'@'localhost' IDENTIFIED BY 'xiaoming2048!@#';

-- 允许任意 IP(远程连接常用) CREATE USER 'xiaoming'@'%' IDENTIFIED BY 'xiaoming2048!@#';

-- 授予单库全部权限 GRANT ALL PRIVILEGES ON dbname.* TO 'xiaoming'@'localhost';

-- 授予常用 DML + DDL(更安全) GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON dbname.* TO 'xiaoming'@'localhost';

FLUSH PRIVILEGES;

常用权限说明

权限 作用
SELECT 查询
INSERT 插入
UPDATE 更新
DELETE 删除
CREATE 建库建表
DROP 删库删表
ALTER 改表结构
INDEX 建索引
GRANT OPTION 可把已有权限再授给他人

原则:最小权限——应用账号一般不给 DROP、GRANT OPTION。

修改密码

-- 指定用户
ALTER USER 'xiaoming'@'localhost' IDENTIFIED BY 'xiaoming1988!@#';

-- 当前登录用户 ALTER USER USER() IDENTIFIED BY 'xiaoming2077!@#';

MySQL 8 也可:

SET PASSWORD FOR 'xiaoming'@'localhost' = '新密码';

撤销与删除用户

REVOKE ALL PRIVILEGES ON dbname.* FROM 'xiaoming'@'localhost';
DROP USER 'xiaoming'@'localhost';
FLUSH PRIVILEGES;

备份与还原

导出(mysqldump):

mysqldump -u root -p -h 10.1.33.238 dbname > backup.sql

仅结构 / 仅数据:

mysqldump -u root -p --no-data dbname > schema.sql
mysqldump -u root -p --no-create-info dbname > data.sql

还原:

mysql -u root -p dbname < backup.sql
参数 含义
-u 用户名
-p 提示输入密码
-h 远程主机
dbname 数据库名

踩坑与注意

  1. 'user'@'localhost' 与 'user'@'%' 是两个账号,改密、授权要指对 Host。
  2. 授权后必须 FLUSH PRIVILEGES(部分版本 GRANT 已自动刷新,习惯保留一句无妨)。
  3. 远程连不上:除 % 外,检查云安全组、MySQL bind-address、是否放行 3306。
  4. mysqldump 大库:加 --single-transaction(InnoDB)减少锁表;超大表考虑分表导出或物理备份。
  5. 密码特殊字符:shell 中注意引号,避免 ! 被 history 展开。

小结

  • 查用户:SELECT User, Host FROM mysql.user
  • 建用户 + 授最小权限 + FLUSH PRIVILEGES
  • 备份:mysqldump … > backup.sql;还原:mysql … < backup.sql

延伸阅读