mysql怎么设置密码:分版本实操,覆盖新装与修改场景
mysql怎么设置密码主要区分5.7版本和8.0版本,两个版本加密规则、命令语法完全不同,新装数据库、重置初始密码、修改已有密码的操作互不通用,你可以根据自己的数据库版本对应操作,所有命令均为终端直接执行的可落地指令,无需额外配置辅助文件,同时能彻底解决密码设置失败、权限报错、登录被拒等常见问题。
新装MySQL 5.7时,系统会自动生成临时随机密码,不会默认空密码。你首先需要登录数据库,再修改初始密码完成初始化设置。打开服务器终端,输入mysql -uroot -p,回车后粘贴日志文件中查询到的临时密码即可登录。登录成功后,执行密码设置命令set password=password('你的新密码');,命令执行成功即密码设置生效。该版本支持简单密码,但默认开启密码强度校验,若密码过于简单会抛出校验失败报错,你可以临时关闭强度校验再设置简单密码。
MySQL 8.0摒弃了老旧的password()加密函数,采用caching_sha2_password全新加密方式,这也是8.0版本不能沿用5.7密码设置命令的核心原因,强行使用旧命令会直接出现语法错误。8.0新装环境同样有临时密码,登录方式和5.7一致,密码设置需执行专属命令alter user 'root'@'localhost' identified by '新密码';,这条命令是8.0版本唯一标准的密码设置、修改指令,适配本地登录的root账号。
远程访问账号的密码设置方法
很多用户仅设置本地root密码,却忽略远程登录账号,导致外网无法连接数据库。远程账号的密码设置语法和本地略有区别,你需要精准匹配账号的访问权限地址。如果是允许所有IP访问的root账号,执行alter user 'root'@'%' identified by '自定义密码';即可完成密码设置。设置完成后必须执行flush privileges;刷新权限,否则密码修改不会即时生效,系统依旧识别旧密码。
忘记旧密码无需重装数据库,可通过免密登录模式重置密码。先关闭MySQL服务,修改配置文件my.cnf,在mysqld模块下添加skip-grant-tables参数,保存配置后重启服务,此时可无密码直接登录数据库。登录后先执行刷新权限命令,再用对应版本的标准命令设置新密码,最后删除配置文件中的免密参数,重启数据库恢复正常权限校验,整个过程不会丢失数据库原有数据。
硬性风险限制:MySQL 8.0版本绝对不支持纯数字、纯字母的简单密码,密码长度必须不少于8位,且必须包含字母、数字、特殊符号三种元素,强行设置简单密码会触发密码策略报错,无法完成配置;5.7版本关闭密码校验后可设置简单密码,但生产环境严禁使用,会造成数据库数据泄露风险。
- 本地登录账号后缀为localhost,仅本机可访问
- 全网登录账号后缀为%,所有IP均可连接
- 密码设置后必须刷新权限,否则配置延迟生效
日常修改已生效密码,无需重置免密模式,直接登录MySQL客户端,根据自身版本执行对应修改命令即可,无需重启服务,操作完成即刻生效,适配日常密码定期更新的使用需求。