Linux环境下设置mysql支持远程连接数据库(转载)  


这个问题在php100问了好久,也没有得到答案(或许他们觉得简单,没法回答的,但是对新手来说,摸索是一个“漫长”的过程,特别像我这种在公司里边学习边用)。后来自己不断摸索终于找到了问题的所在,因为工作比较忙,今天终于有时间把这个详细解决过程写出来了,希望对你有帮忙!


有两种方法


一是:改表法(这个方法我没有试)


因为在linux环境下,默认是关闭3306端口远程连接的,需要开启,这个后面说!

二是:授权法(我用的是这个方法)

//这样应该可以进入MySQL服务器    

//修改生效    


//退出MySQL服务器  


这个时候还没结束呢,一般的服务器上安装的都有防火墙之类的东西,也需要我们开启3306端口才能用了


在linux下要开启防火墙 打开3306 端口,编辑这个文件vim /etc/sysconfig/iptables


输入


-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT


重启防火墙,记得一定要重启哦,我就是因为没有重启防火墙导致一直连接不上,最后终于找到答案了

快速让MySQL数据库服务器支持远程连接

在CentOS上安装MySQL数据库服务器后,系统出于安全性考虑,缺省不支持用户通过非本机连接上数据库服务器,如果想让用户通过另外一台机器连接上数据库服务器必须手动进行修改:

1、在控制台执行 mysql -u root -p mysql,系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台,这个命令的第一个mysql是执行命令,第二个mysql是系统数据名称,不一样的。

2、在mysql控制台执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION;

3、 在mysql控制台执行命令中的 'root'@'%' 可以这样理解: root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址,你也可替换成任意其它用户名或指定唯一的IP地址;'MyPassword' 是给授权用户指定的登录数据库的密码;另外需要说明一点的是我这里的都是授权所有权限,可以指定部分权限

4、不放心的话可以在mysql控制台执行 select host, user from user; 检查一下用户表里的内容


打开MySQL远程访问权限

1.以 root 帐户登陆 MySQL 

MySQL -uroot -p123456 

注:123456 为 root 用户的密码。

2.创建远程登陆用户并授权

grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456'; 

注:上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123.123.123.123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。

----------------

改表法 


mysql -u root -p 

mysql>use mysql; 

mysql>update user set host = '%' where user = 'root'; 

mysql>select host, user from user;