MySQL 5.6 root密码初始化

从MySQL 5.6.6以后,安装rpm之后,root用户会被分配一个随机密码,同时在mysql.user表中新增了一个password expired字段,任何客户端首次连接后必须首先修改密码才能做下面的操作。这是因为在rpm的spec脚本中,初始化数据库的脚本改为
/usr/bin/mysql_install_db --rpm --user=mysql --random-passwords
新增了--random-passwords参数

按照官网说明,随机密码保存在~/.mysql_secret,这个由安装rpm的用户决定,使用kickstart安装时,文件放在/tmp/目录下。文件内容如下:

# The random password set for the root user at Thu Sep 25 03:30:31 2014 (local time): 9udLegnPieCdVC8m

通过客户端连接mysql服务器时,也应该使用对应的版本,老的版本可能由于不支持过期密码而无法连接,出现类似下面的错误:
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.

通过对应的mysql客户端连接后,执行SET PASSWORD命令可以重新设置root用户密码,expired字段变为N。


那么如果是在脚本中如何重新设置密码呢?
首先提取密码
pass=$(awk '/password/{print $NF}' /tmp/.mysql_secret)
就是取最后一列。
但是发现执行下面的命令时
echo "SET PASSWORD  = PASSWORD('');" | mysql -u root --password='u0jt49zWghGMOalT'
仍然回显上面提到的错误信息,查询man可以发现新版客户端增加了一个--connect-expired-password参数
Indicate to the server that the client is can handle sandbox mode if the account used to connect has an expired password. This can be useful for noninteractive invocations of mysql because normally the server disconnects noninteractive clients that attempt to connect using an account with an expired password. (See Section 6.3.6, “Password Expiration and Sandbox Mode”.) This option was added in MySQL 5.6.12.

执行
echo "SET PASSWORD  = PASSWORD('');" | mysql -u root --password='u0jt49zWghGMOalT' -b --connect-expired-password

OK, 密码重置成功。


网上有人介绍另外一种重置密码的方法,没有验证,贴出来供参考
mysqladmin -u root --password='u0jt49zWghGMOalT' password ''



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值