mysql5.6初始化密码_MySQL5.6root密码初始化
从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.
执⾏
mysql下载后的初次使用
echo "SET PASSWORD = PASSWORD('');" | mysql -u root --password='u0jt49zWghGMOalT' -b --connect-expired-password
OK, 密码重置成功。
⽹上有⼈介绍另外⼀种重置密码的⽅法,没有验证,贴出来供参考
mysqladmin -u root --password='u0jt49zWghGMOalT' password ''

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。