远程连接数据库:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.154.143' (10061)
我安装的MySQL数据库版本是5.7.24 远程连接数据库的时候报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.154.143’ (10061)
给用户附远程登录时候报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- 第一步先测试下看看能不能ping通要远程连接的主机
ping 192.168.154.143 //ping ip地址
得到上图说明可以远程连接上主机。
- 去主机上查看3306端口是否被别的应用给占用
sudo netstat -nlp|grep 3306
出现上图形式说明MySQL服务是在3306端口启动的。
- 然后查看my.conf文件是否绑定地址为本地
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中查找是否存在这行: “bind-address = 127.0.0.1” 将它注释掉
- 在本地登录用root用户登录MySQL查看是否有权限远程登录
select user,host from mysql.user;
如图可以看到root用户只有localhost(本机)可以登录,如果host那一栏是“%”的话说明已经是可以远程登录,可以尝试去登录下。
- 把root用户放权给所以机器都可以远程登录
grant all privileges on *.* to 'root'@'%' identified by 'uroot';
说明:“all privileges” 是赋予所有的权限,也可以赋予别的权限
“*.*” 是给所有的数据库和表都开放权限
“root” 是用户登录的名字
“%” 代表所有的机器可以登录,也可以给具体的ip
“uroot” 远程登录的密码
具体的权限问题请看MySQL数据库的权限
在执行上面命令的时候报错了说我给的密码不符合现在的策略。
- 接着我查看数据库密码的符合规则
show variables like 'validate_password%';
validate_password_check_user_name //核对用户名和密码
validate_password_dictionary_file //验证密码强度的字典文件路径
validate_password_length//密码的最小长度
validate_password_mixed_case_count //密码最少包含多少个英文字母
validate_password_number_count //密码最少包含多少个数字
validate_password_policy //密码的安全度
validate_password_special_char_count //密码最少包含多少个特殊字符
- 然后我们把设置密码校验难度减低
mysql> set global validate_password_length=3;//其实这里最少是4,设置比4小会变成4.
mysql> set global validate_password_mixed_case_count=0;
mysql> set global validate_password_number_count=0;
mysql> set global validate_password_policy=0;
mysql> set global validate_password_special_char_count=0;
- 重新给root用户开放远程登录的权限
grant all privileges on *.* to 'root'@'%' identified by 'uroot';
从上图可以看出设置成功了,退出mysql。
- 最后一步了,重启MySQL的服务就可以了
sudo service mysql restart
可以远程登录了。