启动mysql服务:service mysqld start
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
如果安装目录下找不到my.ini文件 windows系统下处理如下,打开C盘 查看选项中,查看隐藏文件,如果不出意外在programeData下(C:\ProgramData\MySQL\MySQL Server 8.0)找到my.ini
加入这一项 default_authentication_plugin=mysql_native_password
然后在服务中重启MySQL80服务
以centos7.6为例,yum命令安装的mysql8.0初始密码存放路径为/var/log/mysqld.log
mysql 8.0以上 新版本账号密码策略修改和密码修改
老版本的密码策略变量:
validate_password_policy 这个参数用于控制validate_password的验证策略0-->low 1-->MEDIUM 2-->strong。
validate_password_length密码长度的最小值(这个值最小要是4)。
validate_password_number_count 密码中数字的最小个数。
validate_password_mixed_case_count大小写的最小个数。
validate_password_special_char_count 特殊字符的最小个数。
validate_password_dictionary_file 字典文件
SET GLOBAL log_bin_trust_function_creators=1;开启函数功能
8.0后要注意密码策略变量变化
validate_password.check_user_name ON
validate_password.dictionary_file
validate_password.length
validate_password.mixed_case_count
validate_password.number_count
validate_password.policy
validate_password.special_char_count
如:validate_password_policy 变为validate_password.policy.
所以set global validate_password_policy=0;变为 set global validate_password.policy=0;
密码最小长度(6):set global validate_password_length=6; 变为 set global validate_password.length=6修改root的密码:
登录后
use mysq;
ALTER USER'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码
update user set host = '%' where user ='root';
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'yourpwd!';
Query OK,0 rows affected (0.04sec)
mysql> grant all privileges on *.* to 'root'@'%';
Query OK,0 rows affected (0.03sec)
另外,如果远程连接的时候报plugin caching_sha2_password could not be loaded这个错误,可以尝试修改密码加密插件:
mysql> alter user 'root'@'%' identified with mysql_native_password by 'yourpwd';
grant all privileges on *.* to 'root'@'%' identified by 'yourpwd';
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#命令含义--zone #作用域--add-port=3306/tcp #添加端口,格式为:端口/通讯协议--permanent #永久生效
重启防火墙
systemctl restart firewalld.service