安装mysql后,首次使用会出现让改密码的情况,刚开始想着随便改改,
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
结果总是出错,说设置密码不符合规则。
这个其实与validate_password_policy的值有关。validate_password_policy有以下取值:
Policy | Tests Performed |
---|---|
0 or LOW | Length |
1 or MEDIUM | Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG | Length; numeric, lowercase/uppercase, and special characters; dictionary file |
mysql默认规则是1,即MEDIUM,所以刚开始设置的密码必须符合长度(12),且必须含有数字,小写或大写字母,特殊字符。所以如果你想改密码,要么符合规则1,即必须符合长度(12),且必须含有数字,小写或大写字母,特殊字符;要么修改规则。我们想把密码修改的简单些,就要修改规则。
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定,默认值为8,最小值是4。这是因为::
validate_password_length = validate_password_number_count
+ validate_password_special_char_count
+ (2 * validate_password_mixed_case_count)
其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。他们的默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。怎么修改他们的值呢?
set global validate_password_length=1;
set global validate_password_mixed_case_count=2;
修改密码长度可以省略,你可以直接修改规则,然后修改密码就可以了。
配置远程登录
mysql默认root用户只能本地登录,如果要远程登录连接,要设置一下,这里直接用root来远程登录不添加其他角色。
使用命令:
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql> flush privileges; #重载授权表
mysql> exit;
.*.的意思是所有库的所有表;To后面跟的是用户名;@后面跟的是ip地址,%代表所有ip地址,identified by后面的是密码。
添加3306端口
打开3306端口命令:
firewall-cmd --zone=public --add-port=3306/tcp --permanent;
这时会提示FirewallD is not running,防火墙没开。
开启防火墙:
systemctl start firewalld; #开启防火墙
systemctl status firewalld; #查看防火墙的状态
然后再打开3306端口,重启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent;
firewall-cmd --reload; #重启防火墙
小知识
查看mysql初始密码
[root@star ~]# grep "A temporary password" /var/log/mysqld.log
2021-07-21T15:09:46.396678Z 1 [Note] A temporary password is generated for root@localhost: vdwg%k*qx1.G