1 拥有旧MySQL的root密码
方法一
在mysql系统外,使用mysqladmin
# mysqladmin -u root -p password "123456"
Enter password: 【输入原来的密码】
mysql> mysqladmin -u用户名 -p旧密码
password
新密码;
-- 例子:
mysql> mysqladmin -uroot -p123456
password
123;
方法二
通过登录mysql系统,
# mysql -uroot -p
Enter password: 【输入原来的密码】
mysql>use mysql;
set方式;设置永不过期;
mysql> set password=password('123456'); # set设置
mysql> alter user 'root'@'localhost' password expire never;
mysql> flush privileges;
mysql> exit;
mysql>
set
password
for
用户名@localhost =
password
(
'新密码'
);
-- 例子:
mysql>
set
password
for
root@localhost =
password
(
'123456'
);
update 方式;
mysql> update user set password=password("123456") where user='root'; # update更新
mysql> flush privileges;
mysql> exit;
2 忘记myql的root密码
首先,你必须要有操作系统的root权限了。
类似于安全模式登录系统,
2.1 关闭当前运行的mysqld服务程序
service mysqld stop(要先将mysqld添加为系统服务)
2.2 mysqld_safe以安全模式启动重置密码
使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务
mysqld_safe --skip-grant-tables &
或者
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &
&,表示在后台运行,不在后台运行的话,就再打开一个终端。
使用空密码的root用户登录数据库,重新设置ROOT用户的密码
# mysql
#5.6及以前
mysql> UPDATE mysql.user SET password=password('123456') WHERE user='root';
# 5.7;mysql.user表authentication_string字段替换了password字段;
mysql> UPDATE mysql.user SET authentication_string=password('123456') WHERE user='root';
mysql> flush privileges;
mysql> exit;
本来mysql是不分大小写的,但是这个是修改的mysql中的mysql数据库的具体的值,要注意到。
也可以将“skip-grant-tables”加入/etc/my.cnf文件里面,再重启mysql服务
2.3 通过修改配置文件重置密码
修改配置文件(/etc/my.cnf),在 [mysqld] 小节下添加一行:skip-grant-tables=1,让 mysqld 启动时不对密码进行验证
vim /etc/my.cnf
添加:
skip-grant-tables=1
重启mysql服务生效,修改方式同上;
修改完成后,在 [mysqld] 小节下去掉:skip-grant-tables=1
2.4 mysql 5.7 通过 alter 命令修改密码
mysql5.7默认生成随机密码,在初始化mysql配置时产生;
mysql 5.7:通过临时密码登陆mysql服务,必须用alter命令修改密码
mysql> alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;
3 设置简单的密码总是会有下面的提示:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
重新登陆 MySQL 准备设置简单密码:
3.1 查看 mysql 初始的密码策略。
SHOW VARIABLES LIKE 'validate_password%';
3.2 设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 。
set global validate_password_policy=LOW;
3.3 当前密码长度为 8 ,为了方便,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 。
set global validate_password_length=6;
3.4 现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,输入下面的修改语句 :
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
flush privileges;
3.5 可以看到修改成功,表示密码策略修改成功了;重新登录 MySQL ,验证新密码。