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用户表,可以选择禁止某个用户在远程地址上的授权,也可以删除所有用户在任意主机上的授权。无论采用哪种方法,都需要注意不要授权给不必要且不可信的用户,保证数据库的安全性。


数据运维技术 » MySQL禁止远程登陆(mysql不允许远程登录)