怎样关闭MySQL远程连接

2015年6月9日 | 分类: 【技术】

当使用360网站安全在线工具(http://webscan.360.cn)对网站扫描时:

网站数据库泄露风险 共检测290项 正在检测... Mysql可远程连接

可以在mysql自带的系统数据库‘mysql’里查找一个叫做user的表。user表里就有一个字段叫做localhost。如果这里还有别的字段,并且 user 为 remote 或者 一个用户名为% 就说明还有用户在用远程连接。把这样的用户删掉,只保留LOCALHOST就好了。

操作过程:

1. 登录 Mysql-Server 连接本地 mysql

mysql -h localhost -u root -p
Enter password:
mysql>

2、修改 Mysql-Server 用户配置

mysql> USE mysql;
Database changed
mysql> SELECT User, Password, Host FROM user;
+------+----------+-----------+
| User | Password | Host      |
+------+----------+-----------+
| root |          | localhost |
| root |          | %         |
+------+----------+-----------+
2 row in set (0.00 sec)

3、删除第二条记录

mysql>Delete FROM user Where Host="%";

4、验证删除是否成功

mysql> SELECT User, Password, Host FROM user;
+------+----------+-----------+
| User | Password | Host      |
+------+----------+-----------+
| root |          | localhost |
+------+----------+-----------+
1 row in set (0.00 sec)

只剩下一条记录表示删除成功。

如果需要开启mysql远程连接:

首先登录:

mysql -u root -h localhost -p
use mysql #打开mysql数据库
#将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
update user set host='%' where user='root' and host='localhost';
flush privileges; #刷新权限表,使配置生效

然后我们就能远程连接我们的mysql了。

3、如果您想关闭远程连接,恢复mysql的默认设置(只能本地连接),您可以通过以下步骤操作:

mysql -u root -h localhost -p
use mysql #打开mysql数据库
#将host设置为localhost表示只能本地连接mysql
update user set host='localhost' where user='root';
flush privileges; #刷新权限表,使配置生效

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

参考

一. 改表法

不允许帐号从远程登陆,只能在localhost。登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改成”%”。

mysql -u root -pvmwaremysql>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' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果你想允许用户myuser从ip为192.168.0.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果你想允许用户myuser从ip为192.168.0.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.0.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;

三. 进入MySQL服务器

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限
mysql>FLUSH PRIVILEGES //修改生效
mysql>EXIT //退出MySQL服务器

下面就可以在其它任何的主机上以root身份登录MySQL了。

当mysql禁止远程连接时数据库远程管理的解决方法:

备份MYSQL数据库经常会遇到数据库版本问题,数据库内容编码格式问题,数据库远程连接被限制问题,诸多问题,所以数据库备份起来也特别麻烦。

由于PHP和MYSQL经常在一台服务器上面,为了安全经常是禁止远程访问数据库的,这样备份数据库通常得传备份工具到网站空间上面连接。这样麻烦还要受数据库版本编码格式影响,而Navicat的HTTP通道连接解决了这一难题。

Navicat使用HTTP通道连接备份数据库方法:首先打开Navicat点新建连接,然后在常规选项卡里面依次输入:连接名,主机名,商品,用户名,密码。然后点HTTP选项卡,勾选使用HTTP通道,接下来把Navicat根目录下面的ntunnel_mysql.php文件复制到要备份的网站根目录。通道地址就写:网址/ntunnel_mysql.php,点连接测试,确定即可。