一句话:MySQL 用户权限、改密与
mysqldump备份的常用命令速查表。
写在前面
部署博客或多环境联调时,经常要 建库用户、授权、改密码、导出备份。本文整理个人项目中反复用到的 SQL 与 shell 命令,便于复制执行。执行前请确认库名、主机名与权限范围,避免误授 *.* 到生产。
核心内容
查询用户
sql
SELECT User, Host FROM mysql.user;
Host 决定从哪里可连:localhost 仅本机,% 表示任意主机(需配合防火墙与白名单)。
创建用户与授权
sql
-- 仅本机登录
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。
修改密码
sql
-- 指定用户
ALTER USER 'xiaoming'@'localhost' IDENTIFIED BY 'xiaoming1988!@#';
-- 当前登录用户
ALTER USER USER() IDENTIFIED BY 'xiaoming2077!@#';
MySQL 8 也可:
sql
SET PASSWORD FOR 'xiaoming'@'localhost' = '新密码';
撤销与删除用户
sql
REVOKE ALL PRIVILEGES ON dbname.* FROM 'xiaoming'@'localhost';
DROP USER 'xiaoming'@'localhost';
FLUSH PRIVILEGES;
备份与还原
导出(mysqldump):
shell
mysqldump -u root -p -h 10.1.33.238 dbname > backup.sql
仅结构 / 仅数据:
shell
mysqldump -u root -p --no-data dbname > schema.sql
mysqldump -u root -p --no-create-info dbname > data.sql
还原:
shell
mysql -u root -p dbname < backup.sql
| 参数 | 含义 |
|---|---|
-u |
用户名 |
-p |
提示输入密码 |
-h |
远程主机 |
dbname |
数据库名 |
踩坑与注意
'user'@'localhost'与'user'@'%'是两个账号,改密、授权要指对 Host。- 授权后必须
FLUSH PRIVILEGES(部分版本GRANT已自动刷新,习惯保留一句无妨)。 - 远程连不上:除
%外,检查云安全组、MySQLbind-address、是否放行 3306。 mysqldump大库:加--single-transaction(InnoDB)减少锁表;超大表考虑分表导出或物理备份。- 密码特殊字符:shell 中注意引号,避免
!被 history 展开。
小结
- 查用户:
SELECT User, Host FROM mysql.user - 建用户 + 授最小权限 +
FLUSH PRIVILEGES - 备份:
mysqldump … > backup.sql;还原:mysql … < backup.sql

全部评论(0)