mysql数据库设置密码及忘记密码时的修改方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库设置密码及忘记密码时的修改方法相关的知识,希望对你有一定的参考价值。

环境介绍:
我用的测试环境是Red Hat linux6 版本安装mysql5.7的server。
之前有讲过mysql server安装过程并能用navicat工具连接上mysql server。下面要说的是如何给mysql设置账户密码登录。
在刚安装服务时,我在/etc/my.cnf 配置文件中添加了一条 skip-grant-tables 让它可以不进行密码验证就能登录到mysql server上。下面介绍的内容是mysql数据库设置密码及忘记密码时的修改方法。

注:MySQL5.7在初始安装后,会生成随机初始密码,并在/var/log/mysqld.log中有记录,可以通过cat命令查看,找password关键字即可找到随机初始密码。

设置密码方法如下:
方法1:用update直接编辑user表

mysql -u root  /*进入mysql*/
mysql>use mysql  /*进入mysql用户*/
mysql>update user set authentication_string=password(‘newpass‘),password_expired=‘N where user=‘root‘; 
/本sql适用于mysql5.7之后的版本(包括5.7),5.7之前的版本适用于update user set Password = PASSWORD(‘newpass‘) WHERE user = ‘root‘;*/
mysql>FLUSH PRIVILEGES;   /*告诉服务器重载授权表*/

退出mysql,编辑/etc/my.cnf文件,删除skip-grant-tables的内容,在重启服务使用账户密码登录即可。
方法2:mysqladmin命令(当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,这种方法就是无效的)
mysqladmin -u root password "newpass" /*设置的密码为newpass*/<br/>如果要修改用户名密码
方法3:为账户赋予密码用 set password命令
mysql&gt; SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘newpass‘);
方法4:如果你没有以匿名用户连接,省略FOR子句便可以更改自己的密码:
mysql&gt; SET PASSWORD = PASSWORD(‘newpass‘);
方法5:你还可以在全局级别使用GRANT USAGE语句(在.)来指定某个账户的密码而不影响账户当前的权限:
mysql&gt; GRANT USAGE ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘newpass‘;

补充:创建新账户时建立密码

mysql> INSERT INTO user (Host,User,Password) VALUES(‘%‘,‘oldboy‘,PASSWORD(‘newpass‘));
mysql> FLUSH PRIVILEGES;

当你使用SET PASSWORD、INSERT或UPDATE指定账户的密码时,必须用PASSWORD()函数对它进行加密。(唯一的特例是如果密码为空,你不需要使用PASSWORD())。需要使用PASSWORD()是因为user表以加密方式保存密码,而不是明文。

mysql> INSERT INTO user (Host,User,Password) VALUES(‘%‘,‘oldboy‘,‘newpass‘);
mysql> FLUSH PRIVILEGES;

结果是密码‘newpass‘保存到user表后没有加密。当oldboy使用该密码连接服务器时,值被加密并同保存在user表中的进行比较。但是,保存的值为字符串‘newpass‘,因此比较将失败,服务器拒绝连接:
Access denied

修改密码方法如下:
方法1: 如果忘记root密码,可以通过上面的设置密码第一种方法进行修改。
1.先修改配置文件/etc/my.cnf ,在[mysql]下面添加 skip-grant-tables 参数,重启服务。这时不用输入密码就能登录mysql
2.进入 mysql库,输入use mysql,用update 修改mysql的user表
3.FLUSH PRIVILEGES; /刷新权限/,然后退出mysql
4.将my.cnf配置文件中的 skip-grant-tables 参数注销或删除,在重启mysql服务即可

方法2: 使用mysqladmin
mysqladmin -u root -p password "newpass2" /*这时候回车提示输入的密码是旧密码*/
mysqladmin -u root -pnewpass password "newpass2" /*如果记得旧密码,用这种方式*/

以上是关于mysql数据库设置密码及忘记密码时的修改方法的主要内容,如果未能解决你的问题,请参考以下文章

WordPress忘记密码且邮箱无法发送找回密码链接时的解决办法

MySQL数据库修改密码&忘记密码

mysql8.0修改密码及远程访问设置

Mysql5.7忘记root密码及mysql5.7修改root密码的方法

Mysql5.7忘记root密码及mysql5.7修改root密码的方法

Mysql5.7忘记root密码及mysql5.7修改root密码的方法