总结 :

  1. mysqladmin 命令详解 - https://www.cnblogs.com/dadonggg/p/8625500.html

  2. 当然,你嘚能进 root 权限

最新指令:(2020年2月12日)
ALTER user 'root'@'%' IDENTIFIED BY 'Cliu123#'


归档:

# 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!’;

# MySQL 8.0.11修改密码的方式如下:

1.7. 查询用户密码:

查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;

host: 允许用户登录的ip‘位置’%表示可以远程;

user:当前数据库的用户名;

authentication_string: 用户密码(后面有提到此字段);

1.8. 设置(或修改)root用户密码:

默认root密码为空的话 ,下面使用navicat就无法连接,所以我们需要修改root的密码。

<mark>这是很关键的一步。此处踩过N多坑,后来查阅很多才知道在mysql 5.7.9以后废弃了password字段和password()函数</mark>;authentication_string:字段表示用户密码。

下面直接演示正确修改root密码的步骤:

  1. 如果当前root用户authentication_string字段下有内容,先将其设置为空,否则直接进行二步骤。

use mysql;
update user set authentication_string='' where user='root'
下面直接演示正确修改root密码的步骤:
2. 使用ALTER修改root用户密码,方法为 ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’。如下:

ALTER user 'root'@'localhost' IDENTIFIED BY 'Cliu123#'
此处有两点需要注意:1、不需要flush privileges来刷新权限。2、密码要包含大写字母,小写字母,数字,特殊符号。

修改成功; 重新使用用户名密码登录即可;

注意: 一定不要采取如下形式该密码:

use mysql;
update user set authentication_string=“newpassword” where user=“root”;
这样会给user表中root用户的authentication_string字段下设置了newpassword值;

当再使用ALTER USER ‘root’@‘localhost’ IDENTIFITED BY 'newpassword’时会报错的;

因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;

*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE