1. 文章引言
今天在阿里云上搭建了mysql
数据库,并使用本地Navicat
连接线上的数据库。
接下来,我会详细介绍本地电脑如何远程连接阿里云服务器上的MySQL
数据库,以及解决在连接过程中报出的错误:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
。
但在介绍之前,确保你安装了mysql
数据库。
如果你还没安装mysql
数据库,可以参考这篇博文:
https://blog.csdn.net/luowenmin/article/details/81945548
同时,保证你已启动了线上的数据库,查看线上数据库的命令如下:
service mysqld status
如果出现如上图所示的标志,说明我们的数据库是启动的。
2. 连接远程数据库
mysql
会默认创建4
个数据库,如下表所示:
用户 | 主机 |
---|---|
mysql.infoschema | localhost |
mysql.session | localhost |
mysql.sys | localhost |
root | localhost |
但我们此时需要创建一个新用户,允许所有的ip
都能访问,可以使用如下命令创建:
create user 'root'@'%' identified by '你的数据库登录密码#';
但mysql
报错了,报错信息是:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
3. 分析问题
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
翻译过来就是:在现在的版本中,你的密码不安全。
我们通过如下mysql
语句,查看设置密码的要求:
SHOW VARIABLES LIKE 'validate_password%'
查询结果如下表所示:
| Variable_name | Value |
|--------------------------------------|--------|
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
上表中的validate_password.policy
是判断修改的新密码是否符合当前的策略,不满足报错,不让修改。
如下图所示:
4. 解决问题
根据以上分析结果可知,由于当前策略是MEDIUM
,即validate_password.policy = MEDIUM
,数据库不让我们修改。
因而,我们可以将其修改成低版本的,如代码所示:
set global validate_password.policy=LOW;
如果原数据库里有%
的用户,我可以根据以下流程,来创建新的用户。
- 删除用户
drop user 'root'@'%';
- 刷新修改权限
flush privileges;
- 创建新用户
create user 'root'@'%' identified by '你的密码';
- 查询用户
mysql> select user,host from user;
查询用户的结果如下表:
| user | host |
|------------------|-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
用户创建成功后,我们即可成功远程连接阿里云服务器上的MySQL
数据库,如下图所示: