阿里云服务器Linux环境下设置mysql支持远程连接数据库
分享有两种方法:
一是:改表法(这个方法我没有试)
因为在linux环境下,默认是关闭3306端口远程连接的,需要开启,这个后面说!
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库 里的 “user”(远程数据库的名称) 表里的 “host” 项,从”localhost”改称”%”
- mysql -u root -pvmwaremy
-
- sql>use mysql;
-
- mysql>update user set host = '%' where user = 'root';
-
- mysql>select host, user from user;
二是:授权法
例如,你想myuser(远程连接的用户名)使用mypassword(远程连接的密码)从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’IDENTIFIED BY ’mypassword’ WI TH GRANT OPTION;
如果你想允许用户myuser(远程连接的用户名)从ip为192.168.1.6(你测试电脑上的IP)的主机连接到mysql服务器,并使用 mypassword(远程连接的密码)作为密码
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.6’IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
开始用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES使修改生效,就可以了。
方法是在安装mysql的机器上运行:
- 1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器
- 2、mysql>GRANT ALL PRIVILEGES ON *.* TO 'root’@ '%’WITH GRANT OPTION
- //赋予任何主机访问数据的权限
- 3、mysql>FLUSH PRIVILEGES //修改生效
- 4、mysql>EXIT //退出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
保存后在控制台输入 /etc/rc.d/init.d/iptables restart 重启防火墙,记得一定要重启哦,我就是因为没有重启防火墙导致一直连接不上,最后终于找到答案了
快速让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 -u root -p 123456
-
- 注: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 。
改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”
- mysql -u root -p
-
- mysql>use mysql;
-
- mysql>update user set host = '%' where user = 'root';
-
- mysql>select host, user from user;