~# 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” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。
第二:在系统防火墙添加例外端口:3306,并允许例外。
错误提示:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
的解决方法:
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
1.mysql -u root -pvmware
mysql>use mysql
mysql>update user set host = '%' where user = 'root'
mysql>select host, user from user
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION
3.在window自带的防火墙里的例外添加3306端口
总结:
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地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。
mysql的默认端口是3306端口,对外开放3306 一般来说有两大块。一大块是:系统防火墙级别:iptables:
iptables -I input -p tcp --dport 3306 -j ACCEPT
另一大块:mysql层:
授权用户对外访问:
grant 权限 on 数据库.表 to “用户”@“主机名” identified by “密码” 其实可以这样理解,grant 权限 on 权限负责范围 to 权限对象 【认证密码】
这个两层都做了才可以远程连接。linux 学习不只只是这些 掌握点基础知识才能上手,建议www.linuxprobe.com看看,学好Linux,做好运维。加油!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)