private static readonly string connectionString = "Server=localhost;Database=mp_radar_sensor_db;Uid=root;Pwd=123456;"上面是连接本地数据库的代码,想让本地数据库被远程连接的方法:
1.代码做以下修改:
private static readonly string connectionString = "Server=目标电脑IP地址;Port = 3306;Database=mp_radar_sensor_db;Uid=root;Pwd=123456;";2.确保本地数据库允许其他用户远程访问:
(1)修改配置文件:
Windows:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
[mysqld] # 添加或修改这一行 bind-address = 0.0.0.0 # 或注释掉原来的 # bind-address = 127.0.0.1重启MySQL服务:按 win 键,搜索 cmd 右键 命令提示符 -> 以管理员身份运行,打开终端,执行命令:
:: 命令行重启 net stop MySQL80 net start MySQL80 :: 或使用服务管理器 services.msc → 找到 MySQL → 右键重启输入命令后如果出现:服务名无效
解决方法:查询正确的服务名
sc query | findstr "MySQL"重启后验证:输入命令行
C:\Windows\System32>netstat -an | findstr "3306" TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING TCP [::]:33060 [::]:0确认显示0.0.0.0:3306即表示配置生效,可以远程连接了。
(2) .
-- 创建允许任意主机连接的用户 CREATE USER 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON mp_radar_sensor_db.* TO 'root'@'%'; FLUSH PRIVILEGES;如果没有这一步,会出现报错:Host '192.xxx.xx.xxx' is not allowed to connect to thisMySQL server
MySQL 服务器拒绝了你的连接请求,原因是root用户没有远程访问权限。(这个方法并不安 全,因为这个root用户权限比较大,只是暂时解决问题。)
3.防火墙设置:
确保目标电脑的3306 端口(MySQL 默认端口)已开放:
(1)开放方法:控制面板 -> Windows Defender 防火墙 -> 高级设置 -> 左侧点击入站规则-> 右侧点击新建规则 ...
点击下一步,按照表格步骤完成。
| 步骤 | 选择 | 说明 |
| 规则类型 | 端口 | 针对特定端口 |
| 协议与端口 | TCP,特定本地端口 `3306` | MySQL 默认端口 |
操作 | 允许连接 | 放行流量 |
| 配置文件 | 勾选域、专用、公用 | 全场景生效 |
| 名称 | MySQL 3306 | 自定义名称 |
4.检查是否可以远程连接:
终端进入数据库,输入:
mysql> SELECT user, host FROM mysql.user WHERE user='root';得到:第一个root用户允许远程连接。
+------+-----------+ | user | host | +------+-----------+ | root | % | | root | localhost | +------+-----------+