使用Navicat远程连接阿里云服务器的MySQL数据库,一直提示错误:
2003- Can’t connect mysql Server on ’ ‘(10038)
初步怀疑是3306端口没有打开,检查步骤如下:
1、使用nestat命令查看3306端口状态:
~# netstat -an | grep 3306
tcp 0 0 (服务器本地ip地址):3306 0.0.0.0:* LISTEN
从结果可以看出3306端口只是在(服务器本地ip地址)上监听,所以拒绝了其他IP的访问。
2、确定问题时因为3306端口没有开放,那么就需要修改MySQL的配置文件来解决:
使用命令 vim/etc/mysql/my.cnf打开MySQL配置文件,可以看到如下配置信息:
#Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = (服务器本地ip地址)
把最后一行注释掉或者把(服务器本地ip地址)换成你希望的IP
3、使用命令 service mysql restart重启MySQL服务
4、再次使用Navicat用root账户尝试连接,发现可以正常连接
远程连接Mysql服务器的数据库,错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server
猜想是无法给远程连接的用户权限问题。
这样子操作mysql库,即可解决。
在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'即可
mysql -u root -p
mysql;use mysql;
mysql;select 'host' from user where user='root';
mysql;update user set host = '%' where user ='root';
mysql;flush privileges;
mysql;select 'host' from user where user='root';
第一句:以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
如果这步出错"ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'" 由说明该记录有了,跳过这步
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。