说多了都是泪,踩过的坑都不说了。。。。。。。从官网下载对应版本的数据库 https://dev.mysql.com/downloads/mysql/
一、 把mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar解压出来,共8个rpm文件,比如解压到目录mysqldb
二、进入mysqldb目录,执行 rpm -ivh *.rpm,会报 错误:依赖检测失败:
三 、执行 yum -y localinstall *.rpm,通过网络解决依赖关系,会自动下载相关依赖
四、安装完毕后 执行 service mysqld start
五 、执行 mysql -u root -p 进行登陆 。mysql -uroot -p 也可以
六、执行五时,报 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
七、cd /etc 找到文件 my.cnf
八、 vi my.cnf 编辑文件,在[mysqld]下行添加 skip-grant-tables ,保存退出
九、先执行service mysqld restart,重启mysql 。再 执行mysql -uroot -p 登陆,输入密码时直接回车,此时能进入mysql
十、先将密码设置为空 update mysql.user set authentication_string='' where user='root';
十一、执行 flush privileges 。如果不执行此命令:报 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
十二、执行 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'V3q$q7xx';
密码必须符合密码规范,SHOW VARIABLES LIKE 'validate_password%'; --查看密码规范
好像必须 有大小写字母,特殊字符,以及数字。不然报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
十三、 vi my.cnf 编辑文件,注释掉 skip-grant-tables ,保存退出
十四、执行service mysqld restart,重启mysql 。再 执行mysql -uroot -p 登陆,输入上面设置的密码,ok
MySQL5.7和之前的用户修改密码方式:
mysql -uroot -e "Set password=password(‘123’);"
mysql -uroot -p123.com -e "use mysql;update user set authentication_string=password('456') where user='root';"
update mysql.user set authentication_string=password("123") where user='root';
以上三种方法在MySQL8.0以后版本中将不能使用,如果使用了将会导致在正确修改密码是报如下错误:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
如遇上以上问题请使用update语句先清空authentication_string字段,然后再修改密码即可
update user set authentication_string='' where user='root';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
所以特别提醒童鞋们:
MySQL8.0后请使用alter修改用户密码,因为在MySQL8.0以后的加密方式为caching_sha2_password,如果使用update修改密码会给user表中root用户的authentication_string字段下设置newpassowrd值,当再使用alter user 'root'@'localhost' identified by 'newpassword'修改密码时会一直报错,必须清空后再修改,因为authentication_string字段下只能是MySQL加密后的43位字符串密码,其他的会报格式错误,所以在MySQL8.0以后能修改密码的方法只能是:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
关于 validate_password_policy 的取值:
0/LOW:只验证长度;
1/MEDIUM:验证长度、数字、大小写、特殊字符;
2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;