Spring Boot手把手教学(16):mysql8限制IP远程登录

2,174 阅读2分钟

1、前言

mysql的连接,为了安全,一般都需要限制IP登录,无论是内网IP端,或者某些固定的IP;接下来让我们说下 如何限制IP登录;

我们这里使用的Mysql8.0版本,其他版本的命令或许有所不同

2、操作

2.1 服务器登录mysql

[root@10 /]# mysql -u root -p

输入你的密码

切换到mysql库

mysql> use mysql;

查看用户

mysql> select user,host from user;

这里可以看到所有用户。

user  host
root  localhost  		   # 代表只能本机连接,不能远程连接
root  %         		   # 代表允许所有IP远程连接
root  192.168.66.31         # 代表允许IP:192.168.66.31 远程连接
root  192.168.66.32         # 代表允许IP:192.168.66.32 远程连接

以上已经说明了所有设置登录账户权限的场景;

2.2 允许所有人连接

# 更新host为'%'
UPDATE `user` SET `Host`='%' WHERE `user`='root' AND `Host`='localhost';

# Mysql 8 赋权: *.*代表所有库权限,test.* 代表test库的权限
GRANT ALL ON *.* to 'root'@'%';

# 更新配置并使之生效
flush privileges;

其他Mysql版本:

# 更新host为'%'
UPDATE `user` SET `Host`='%' WHERE `user`='root' AND `Host`='localhost';

# Mysql5.7 赋权
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED by '密码' WITH GRANT OPTION;

# 更新配置并使之生效
flush privileges;

2.3 允许单个IP登录,赋权全权限

drop user 'test'@'183.195.13.117';

CREATE user 'test'@'183.195.13.117' IDENTIFIED by '你的密码';

GRANT ALL on *.* TO 'test'@'183.195.13.117';

flush privileges;

2.4 允许单个IP登录,赋权test库权限

drop user 'test'@'183.195.13.117';

CREATE user 'test'@'183.195.13.117' IDENTIFIED by '你的密码';

GRANT ALL on test.* TO 'test'@'183.195.13.117';

flush privileges;

2.5 允许多个IP登录,赋权test库权限

# 第一个IP

CREATE user 'test'@'183.195.13.117' IDENTIFIED by '你的密码';

GRANT ALL on test.* TO 'test'@'183.195.13.117';

flush privileges;

# 第二个IP

CREATE user 'test'@'183.195.13.118' IDENTIFIED by '你的密码';

GRANT ALL on test.* TO 'test'@'183.195.13.118';

flush privileges;

# 有几个IP,就创建多少个用户

2.6 允许某一个IP段访问

有时候我们需要一个IP段的所有客户端可以远程访问,那么该怎么设置呢?

192.168.%.%代表者可以允许192.168.*.*的所有IP可以远程连接;

# 更新Host
UPDATE `user` SET `Host`='192.168.%.%' WHERE `user`='test' AND `Host`='192.168.6.199';

# Mysql 8 赋权
GRANT ALL ON test.* to 'test'@'192.168.%.%';

# 配置生效
flush privileges;

3 重置密码

1.在 [/etc/my.cnf]最后加上如下语句 并保持退出文件;
skip-grant-tables
2.重启mysql
service mysql restart
3.输入以下命令,点击enter键可以跳过密码直接进入mysql
mysql -u root -p
4.查看root用户的相关信息
select host, user, authentication_string, plugin from user;可以看到root用户中authentication_string就是你之前的密码的散列值。
5.当前root用户authentication_string字段下有内容,先将其设置为空
use mysql;
update user set authentication_string='' where user='root';
6.使用ALTER修改root用户密码
ALTER user 'root'@'localhost' IDENTIFIED BY '你的新密码'