mysql修改用户是数据库运维中的常见操作,主要通过alter user语句、grant语句等实现,可根据需求调整用户密码、权限、登录限制等配置,操作前建议先确认当前用户信息,避免误操作影响业务访问。

查看当前已有用户
修改用户前,首先需要确认要修改的用户是否存在,以及当前用户的基础信息,可查询mysql系统库中的user表获取相关信息。
-- 查询所有用户及允许登录的主机 SELECT user, host FROM mysql.user;
修改用户密码
修改用户密码是最常用的修改操作,mysql 5.7及以上版本推荐使用alter user语句完成,不同版本的语法略有差异。
mysql 5.7及以上版本修改密码
-- 修改指定用户的密码,将new_password替换为实际密码 ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_password'; -- 刷新权限使修改生效 FLUSH PRIVILEGES;
mysql 5.6及以下版本修改密码
-- 使用set password语句修改密码
SET PASSWORD FOR 'test_user'@'localhost' = PASSWORD('new_password');
-- 刷新权限
FLUSH PRIVILEGES;
修改用户权限
如果需要调整用户的操作权限,可通过grant语句授予权限,或使用revoke语句回收权限,操作后会自动刷新权限,无需手动执行flush privileges。
授予用户权限
-- 授予test_user对test_db数据库的所有操作权限,允许从localhost登录 GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost'; -- 授予用户查询所有数据库的权限 GRANT SELECT ON *.* TO 'test_user'@'localhost';
回收用户权限
-- 回收test_user对test_db数据库的删除权限 REVOKE DELETE ON test_db.* FROM 'test_user'@'localhost'; -- 查看用户当前拥有的权限 SHOW GRANTS FOR 'test_user'@'localhost';
修改用户登录主机
如果需要调整用户允许登录的客户端主机,可先删除原有用户,再创建新的用户配置,或者直接更新mysql.user表中的host字段。
-- 方法1:删除旧用户,创建新主机配置的用户 DROP USER 'test_user'@'localhost'; CREATE USER 'test_user'@'192.168.0.%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'192.168.0.%'; -- 方法2:直接更新user表的host字段(需要刷新权限) UPDATE mysql.user SET host='192.168.0.%' WHERE user='test_user' AND host='localhost'; FLUSH PRIVILEGES;
修改用户其他属性
alter user语句还可以修改用户的密码过期策略、账户锁定状态等属性,满足更多运维场景需求。
-- 设置用户密码90天后过期 ALTER USER 'test_user'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; -- 锁定用户账户,禁止登录 ALTER USER 'test_user'@'localhost' ACCOUNT LOCK; -- 解锁用户账户 ALTER USER 'test_user'@'localhost' ACCOUNT UNLOCK;
操作注意事项
- 修改用户操作需要拥有mysql的user表操作权限,一般使用root账户执行
- 修改密码或权限后,建议执行
FLUSH PRIVILEGES;确保配置生效,grant和revoke操作会自动生效无需手动刷新 - 修改用户登录主机时,要注意新的host配置是否符合实际访问需求,避免配置错误导致用户无法登录
- 生产环境操作前建议先备份mysql.user表,避免误操作无法回滚
mysql修改用户用户权限alter_user修改时间:2026-06-11 20:21:24