MySQL禁止远程登陆(mysql不允许远程登录)
MySQL:禁止远程登陆
MySQL是一种常用的数据库管理系统,许多人会将其用于网站或者应用程序中。但是,在一些情况下,我们希望只允许本地访问MySQL,而禁止外部远程访问,这样可以提高数据库的安全性。那么,如何禁止MySQL的远程登陆呢?本文将介绍两种方法。
方法一:修改my.cnf配置文件
这是一种比较简单的方法,只需要修改MySQL的配置文件,即可禁止远程登陆。
使用root用户登录MySQL,执行以下命令:
$ mysql -u root -p
接着,打开my.cnf文件,该文件通常位于/etc/mysql/或者/etc/mysql/mysql.conf.d/目录下。
$ sudo vim /etc/mysql/my.cnf
在文件末尾,添加如下两行代码:
bind-address = 127.0.0.1
skip-networking
其中,bind-address指定MySQL绑定的IP地址,127.0.0.1表示只允许本地访问。skip-networking则禁止所有网络连接,只能通过Unix socket连接。保存文件并重启MySQL。
$ sudo service mysql restart
这样,除了本地用户外,其他用户将无法远程登录MySQL。
方法二:修改MySQL用户表
如果你不想修改my.cnf配置文件,也可以通过修改MySQL用户表的方式来禁止远程登陆。
同样地,使用root用户登录MySQL,执行以下命令:
$ mysql -u root -p
然后,选择要禁止远程访问的用户,例如root用户:
mysql> use mysql;
mysql> SELECT User, Host FROM user;+------------------+----------------+
| User | Host |+------------------+----------------+
| root | localhost || root | 127.0.0.1 |
| debian-sys-mnt | localhost || mysql.session | localhost |
| mysql.sys | localhost || root | ::1 |
| | localhost || root | 192.168.1.100 |
+------------------+----------------+8 rows in set (0.00 sec)
接着,用下面的命令来删除该用户在远程地址上的授权:
mysql> DELETE FROM user WHERE User = 'root' AND Host = '192.168.1.100';
Query OK, 1 row affected (0.00 sec)
如果要禁止所有用户的远程访问,只需执行以下命令:
mysql> DELETE FROM user WHERE Host = '%';
Query OK, 3 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
其中,%表示任意主机,这样就删除了所有用户在任意主机上的授权。最后一条命令FLUSH PRIVILEGES用于使修改生效。
如果需要允许某个用户的远程访问,可以重新授权:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
其中,root表示用户名,192.168.1.100为远程地址,password为该用户的密码,WITH GRANT OPTION表示该用户可以授权给其他用户。
总结
禁止MySQL的远程登陆可以提高数据库的安全性,本文介绍了两种方法。第一种方法是修改my.cnf配置文件,只需要添加bind-address和skip-networking两行代码即可。第二种方法是修改MySQL用户表,可以选择禁止某个用户在远程地址上的授权,也可以删除所有用户在任意主机上的授权。无论采用哪种方法,都需要注意不要授权给不必要且不可信的用户,保证数据库的安全性。