mysql数据库密码忘了怎么重置

mysql数据库密码忘了怎么重置,第1张

开始--》运行--》cmd
进入mysql安装目录的bin文件夹(客户都没设置环境变量找不到mysql命令只能到那个目录)
比如:D:\Program Files\MySQL\MySQL Server 50\bin>
1暂停mysql服务;
2忽略授权问题;
3另一个命令行进去myql;
4重置root密码并刷新授权表;
5任务管理器杀掉mysql进程;
6重启mysql服务;
>net stop mysql
>mysqld --skip-grant-tables
开另外一个命令行窗口,一样进入那个目录
>mysql -u root -p
>update mysqluser set password=PASSWORD("新密码") where User="root";
>flush privileges;
任务管理器杀掉mysql进程
>net start mysql
#################################################################
vi /etc/mycnf 在[mysqld]添加
skip-grant-tables
/etc/initd/mysql restart
mysql
>update mysqluser set password=PASSWORD("新密码") where User="root";
>flush privileges;
/etc/initd/mysql restart

谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次。MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记。下面是错误答案:首先停止MySQL服务,然后使用skip-grant-tables参数启动它:shell /etc/initd/mysql stopshell mysqld_safe --skip-grant-tables &此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:UPDATE mysqluser SET Password=PASSWORD('') WHERE User='' AND Host= '';FLUSH PRIVILEGES;下面是正确答案:关键点是:在使用skip-grant-tables参数的同时,还要加上skip-networking参数:shell mysqld_safe --skip-grant-tables --skip-networking &接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务:shell /etc/initd/mysqld restart上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可:首先需要把用到的SQL语句保存到一个文本文件里(/path/to/init/file):UPDATE mysqluser SET Password=PASSWORD('') WHERE User='' AND Host= '';FLUSH PRIVILEGES;接着使用init-file参数启动MySQL服务,shell /etc/initd/mysql stopshell mysqld_safe --init-file=/path/to/init/file &此时,密码就已经重置了,最后别忘了删除文件内容,免得泄露密码。提示:本文用到的参数都是通过命令行mysqld_safe传递的,实际上也可以通过mycnf。

1、mysql安装完成之后,在/var/log/mysqldlog文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:
$> grep 'temporary password' /var/log/mysqldlog
2、
$> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
或者
mysql> set password for 'root'@'localhost'=password('MyNewPass4!');
3、mysql57+有密码策略(可以修改,但不推荐)
在/etc/mycnf文件添加validate_password_policy配置,指定密码策略
# 选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件
validate_password_policy=0
如果不需要密码策略,添加/etc/mycnf文件中添加如下配置禁用即可:
validate_password = off
4、重新启动mysql服务使配置生效:
systemctl restart mysqld
5、默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:
mysql> GRANT ALL PRIVILEGES ON TO 'yangxin'@'%' IDENTIFIED BY 'Yangxin0917!' WITH GRANT OPTION;
Mysql>FLUSH PRIVILEGES;

以win系统举例:

1创建一个文件,eg: C:\mysql-inittxt
>=576后的版本,文件里写:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

<=575的版本写:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');

2停止mysql的服务

3启动mysql服务:

cmd 进入 MYSQL_HOME/bin下,执行:

mysqld --init-file="C:\mysql-inittxt"

如果原来在mysqld install有指定额外参数,这里启动的时候最好也把这些参数加上

之后对于用户 'root'@'localhost'可以使用newpassword进行登录


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13337544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-17
下一篇 2023-07-17

发表评论

登录后才能评论

评论列表(0条)

保存