700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql远程链接10038_Mysql 远程访问控制--10038问题的解决

mysql远程链接10038_Mysql 远程访问控制--10038问题的解决

时间:2019-02-13 14:58:16

相关推荐

mysql远程链接10038_Mysql 远程访问控制--10038问题的解决

帮朋友维护一个php的网站,用Navicat链接ECS虚拟机的Mysql服务一直失败,出现php

`Can't connect to mysql server on xxx.xxx.xxx.xxx(10038)`

的问题,加上以前对Mysql的配置一直不是很熟悉,碰到过不少的坑,就记一下,省得之后还得各类查。mysql

虽然Mysql也是Oracle的,可是Mysql的权限管理和Oracle还不同,以前在建立Mysql的用户的时候,觉得和Oracle的同样,用了web

Create user XX identified by xxxx

这样的语句,而后再Mysql里各类赋权限,结果连本地mysql客户端都连不上,很郁闷。后来,偶然的机会,才知道,原来通常在实际使用中,Mysql的受权和用户建立时一起进行的,直接一句话就搞定了:sql

GRANT ALL PRIVILEGES ON *.* TO 'XXX'@'%' IDENTIFIED BY 'xxxx' WITH GRANT OPTION

恰好这句话,还解决了另一个问题,就是那个“%”。它容许XXX用户远程链接Mysql服务,而若是@后边的那个值是 localhost 的话,那XXX用户就只能在服务器上链接Mysql服务了。若是用户不是你建的,那就得去mysql的user表中将该用户的host改成%就好了。安全

好了,用户算是建立完了,接下来,就是对Mysql服务进行配置了。打开/etc/f,将选项skip-networking注释掉(注:有的资料上说还要讲bind-address设置成127.0.0.1,个人配置文件中反正没看到这句话,也就没有设置。这个选项是用来设置能够进行外部访问Mysql的IP,有一个过滤的做用,也没有必要设置)。服务器

下面,咱们就来看看这个选项是干吗的。这个选项上方有它的说明,大体的意思是这样的:不监听TCP/IP端口;本选项能够做为一个安全加强以确保,全部到Mysqld即Mysql服务的链接都是经过本机进行的;全部与Mysql进行到通讯都必须通过Unix sockets和命名管道。如今明白了吧。socket

回来咱们在f中往上找,看到在[mysqld]组的配置中,开启了3306的端口和一个Unix socket文件,分别用于远程链接和本地链接。若是不将skip-networking注释掉,咱们就只能经过服务器本地进行链接了,而这对于开发和维护都至关的不方便。tcp

至此,问题就算解决一半了,而后,还得去看看防火墙有没有屏蔽掉3306端口。Centos系统的话,在 /etc/sysconfig/iptables 中,有没有这样一句话:ide

A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

有的话就不用管了,没有就加上。而后重启防svg

service iptables restart

就是重启Mysql的服务了:

service mysql restart。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。