- 目标:授权外部设备访问本地数据库
- 处理报错:java.sql.SQLException: null, message from server: "Host 'DESKTOP-xxxxxP' is not allowed to connect to this MySQL server"”
实现步骤
检查服务端端口状态
-
命令行命令:
netstat -an | findstr 3306
-
输出中包含以下内容则说明 3306 端口已监听,否则需要开放服务端防火墙
TCP 0.0.0.0:3306 LISTENING TCP [::]:3306 LISTENING
开放服务端防火墙
- 打开 Windows Defender 防火墙: Win + R ⇒ 输入 firewall.cpl
- 高级设置 ⇒ 入站规则,查看 3306 端口是否已经开放
- 已开放:无需操作
- 未开放:新建规则允许访问 3306(新建规则 ⇒ 端口 -> TCP -> 指定端口为 3306 ⇒ 允许连接)
mysql 授权
-
获取外部设备设备名称(my-DESKTOP)
-
设置外部设备访问本机数据库的账号(my_user)和密码(my_password)
-
创建用户 & 授权用户:在 MySQL 的 console 中执行授权命令
create user 'my_user'@'my-DESKTOP' identified by 'my_password'; GRANT ALL PRIVILEGES ON `my_database`.* TO 'my_user'@'my-DESKTOP';
外部设备连接服务端
- 查看服务端 IP:在服务端通过 ifconfig(Linux) 或者 ipconfig(windows)查看服务端的 ip 地址(IPv4)
- 建立连接:外部设备通过服务端IP地址及 mysql 端口号(默认为 3306),以及授权的用户名和密码连接服务端数据库