MySQL初始化root密码以及root密码忘记解决方法

一、MySQL初始化root密码

命令:systemctl  stop mysqld       #停掉MySQL

命令:systemctl status mysqld         #查看状态

利用mysqld的 --skip-grant-tables选项

修改myf配置,添加 skip_grant_tables=1启动设置:

打开/etc/myf配置文件

添加skip_grant_tables 一行,然后保存退出

mysql默认root用户没有密码,输入mysql –u root 进入mysql

1、进入mysql数据库

use mysql;

2、初始化root密码

mysql>update user set password=PASSWORD('123456') where User='root';

(补充:授权请戳这里)

如果前面是修改/etc/myf配置的方法来跳过授权表,则重置root密码后,应去除相应的设置以恢复正常:

二、root密码忘记解决方法(Windows环境)

1、确保MySQL服务停止

例如,在DOS窗口下输入 net stop mysql5 或 net stop mysql

2、打开第一个cmd窗口,进入MySQL安装目录下的bin目录

例如,D:\mysql-5.5.35-win32\bin>

3、跳过权限安全检查,MySQL服务运行起来后,不用输入密码就能进入数据库

例如,D:\mysql-5.5.35-win32\bin>mysqld –defaults-file=”D:\mysql-5.5.35-win32\my.ini” –console –skip-grant-tables

4、打开第二个cmd窗口,连接MySQL

输入命令:mysql -uroot -p

出现 Enter password: 直接回车

5、使用命令切换到mysql数据库:

use mysql;

6、使用命令更改root密码:

UPDATE user SET Password=PASSWORD('在此输入新密码') where USER='root';

7、刷新权限:

FLUSH PRIVILEGES;

8、退出:

quit;

9、关闭上面打开的两个cmd窗口,重新启动MySQL服务。

1.7. 查询用户密码:
查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;
host: 允许用户登录的ip‘位置'%表示可以远程;
user:当前数据库的用户名;
authentication_string: 用户密码(后面有提到此字段);

1.8. 设置(或修改)root用户密码:
默认root密码为空的话 ,下面使用navicat就无法连接,所以我们需要修改root的密码。
这是很关键的一步。此处踩过N多坑,后来查阅很多才知道在mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码。
下面直接演示正确修改root密码的步骤:

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

use mysql; 
update user set authentication_string='' where user='root'

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

二、使用ALTER修改root用户密码,方法为 ALTER user 'root'@'localhost' IDENTIFIED BY '新密码'。如下:

ALTER user 'root'@'localhost' IDENTIFIED BY 'JOhydhLfMsWyBcn#'
 
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'xiaoyu123';
grant all privileges on zabbix.* to zabbix@localhost;
此处有两点需要注意:
1、不需要flush privileges来刷新权限。
2、密码要包含大写字母,小写字母,数字,特殊符号。
修改成功; 重新使用用户名密码登录即可;

更多推荐

MySQL初始化root密码