在MySQL中如何修改密码及设置访问限制

来源:Python编程网作者:美谷头衔:网络博主
导读:本期聚焦于小伙伴创作的《在MySQL中如何修改密码及设置访问限制》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《在MySQL中如何修改密码及设置访问限制》有用,将其分享出去将是对创作者最好的鼓励。

在MySQL数据库的日常运维和使用中,修改用户密码以及设置合理的访问限制是保障数据库安全的基础操作,能有效避免未授权访问和密码泄露带来的风险。

在MySQL中如何修改密码及设置访问限制

MySQL修改用户密码的方法

使用ALTER USER语句修改密码

ALTER USER是MySQL官方推荐的修改用户密码的方式,适用于MySQL 5.7.6及以上版本,语法规范且兼容性好。基本语法如下:

-- 修改当前登录用户的密码
ALTER USER USER() IDENTIFIED BY 'new_password';

-- 修改指定用户的密码,用户格式为'用户名'@'主机'
ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'new_123456';

执行该语句需要有对应的用户管理权限,通常是root用户或者拥有CREATE USER权限的账户。修改完成后,新密码会立即生效,旧密码将无法再用于登录。

使用SET PASSWORD语句修改密码

SET PASSWORD语句是传统的密码修改方式,兼容更早的MySQL版本,使用方式如下:

-- 修改当前用户密码
SET PASSWORD = 'new_password';

-- 修改指定用户密码,需要指定完整的用户标识
SET PASSWORD FOR 'test_user'@'192.168.0.1' = 'new_123456';

如果使用的是MySQL 5.7.6之前的版本,可能需要用PASSWORD()函数对密码进行加密,不过该函数在高版本中已经被废弃,不建议在新环境中使用。

直接修改mysql.user表修改密码

mysql数据库中的user表存储了所有用户的基本信息和密码,也可以直接操作该表修改密码,但这种方式需要手动刷新权限才能生效,操作如下:

-- 更新用户密码,authentication_string字段存储密码哈希值
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') 
WHERE User = 'test_user' AND Host = 'localhost';

-- 刷新权限使修改生效
FLUSH PRIVILEGES;

注意不同MySQL版本的密码字段名称可能不同,MySQL 5.7之前版本密码字段是Password,5.7及之后是authentication_string,操作前需要确认表结构。

MySQL访问限制的设置方法

限制用户访问来源IP

MySQL的用户标识由用户名和主机地址组成,主机地址就决定了用户可以从哪些IP访问数据库,创建用户或者修改用户时指定主机即可实现IP限制:

-- 创建只能从本地访问的用户
CREATE USER 'local_user'@'localhost' IDENTIFIED BY 'password123';

-- 创建只能从指定IP访问的用户
CREATE USER 'ip_user'@'192.168.0.100' IDENTIFIED BY 'password123';

-- 创建可以从任意IP访问的用户,生产环境不建议使用
CREATE USER 'any_user'@'%' IDENTIFIED BY 'password123';

-- 修改已有用户的访问IP限制
RENAME USER 'test_user'@'localhost' TO 'test_user'@'192.168.0.%';

主机地址支持使用%作为通配符,比如192.168.0.%表示允许192.168.0网段的所有IP访问。

限制用户可操作的数据库和表

通过授权语句可以限制用户只能操作指定的数据库或表,避免用户误操作其他业务数据,基本授权语法如下:

-- 授予用户所有数据库的所有权限,生产环境不建议
GRANT ALL PRIVILEGES ON *.* TO 'test_user'@'localhost';

-- 授予用户指定数据库的所有权限
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';

-- 授予用户指定表的查询和插入权限
GRANT SELECT, INSERT ON test_db.user_table TO 'test_user'@'localhost';

-- 查看用户的权限
SHOW GRANTS FOR 'test_user'@'localhost';

-- 回收用户的权限
REVOKE INSERT ON test_db.user_table FROM 'test_user'@'localhost';

限制用户的资源使用上限

MySQL还可以限制用户每小时的查询次数、更新次数、连接次数等资源使用量,避免单个用户占用过多数据库资源,设置方式如下:

-- 设置用户的资源限制,需要先确保用户有对应的限制属性
ALTER USER 'test_user'@'localhost' 
WITH 
MAX_QUERIES_PER_HOUR 100    -- 每小时最多100次查询
MAX_UPDATES_PER_HOUR 50     -- 每小时最多50次更新
MAX_CONNECTIONS_PER_HOUR 20 -- 每小时最多20次连接
MAX_USER_CONNECTIONS 5;     -- 最多同时5个连接

操作注意事项

  • 修改密码和权限后,如果是通过修改user表的方式,一定要执行FLUSH PRIVILEGES刷新权限,否则修改不会生效。
  • 生产环境中尽量不要设置用户主机为%,尽量缩小可访问的IP范围,降低安全风险。
  • 密码设置尽量包含大小写字母、数字和特殊字符,长度不低于8位,定期更换密码。
  • 操作前建议备份mysql.user表的数据,避免操作失误导致所有用户无法登录。
如果用户忘记root密码,可以先跳过权限验证启动MySQL,再按照上述方法修改root密码,重启服务后即可用新密码登录。

MySQL修改密码访问限制用户权限修改时间:2026-07-24 14:42:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。