修改 MySQL 密码方法小结
MySQL5.7 版本之前修改密码的方法:
方法 1: 用 SET PASSWORD 命令
- mysql -u root
- mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法 2: 用 mysqladmin
mysqladmin -u root password "newpass"
如果 root 已经设置过密码, 采用如下方法
mysqladmin -u root password oldpass "newpass"
方法 3: 用 UPDATE 直接编辑 user 表
- [root@ ~]#mysql -uroot -p
- mysql> use mysql;
- mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
- mysql> FLUSH PRIVILEGES;
在丢失 root 密码的时候, 可以这样
- mysqld_safe --skip-grant-tables&
- mysql -u root mysql
- mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
- mysql> FLUSH PRIVILEGES;
MySQL 5.7.22 修改密码的方式如下:
1, 版本更新, 原来 user 里的 password 字段已经变更为 authentication_string 版本更新 缘故, 好多网上的教程都不适用了, 甚至连官网的文档也不是能够顺利操作的. 如果 MySQL 正在运行, 首先杀之: killall -TERM mysqld. 运行 mysqld_safe --skip-grant-tables & 如果此时不想被远程连接: mysqld_safe --skip-grant-tables --skip-networking & 使用 mysql 连接 server 更改密码
- mysql> update mysql.user set authentication_string=password('hwg123') where user='root' and Host = 'localhost';
- mysql> exit
- [root@Centos7_3 ~]# systemctl restart mysqld
* 特别提醒注意的一点是, 新版的 mysql 数据库下的 user 表中已经没有 Password 字段了
而是将加密后的用户密码存储于 authentication_string 字段.
2, 升级 mysql 报错如下: ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50556, now running 50722. Please use mysql_upgrade to fix this error. 错误是由于你曾经升级过数据库, 升级完后没有使用 mysql_upgrade 升级数据结构造成的.
解决办法: 使用 mysql_upgrade 命令
root@localhost ~]# mysql_upgrade -u root -phwg123
3,MySQL5.7.22 数据库安装完后更改密码;
- [root@ ~]# cat /var/log/mysqld.log | grep password
- [root@ ~]# mysql -uroot -pRir.*sJUX6M*
进入 mysql 后需要改全局变量. 要不然你设置的密码要符合密码复杂度.
- mysql> set global validate_password_policy=0;
- [root@zabbixserver ~]# systemctl restart mysqld
- [root@zabbixserver ~]# mysql -uroot -pRir.*sJUX6M*
- mysql> ALTER USER USER() IDENTIFIED BY '12345678';
或者是这个样子:
mysql> ALTER USER USER() IDENTIFIED BY 'Pass123!';
来源: http://www.bubuko.com/infodetail-2720176.html