MySQL远程连接

需求是以电脑A作为服务器,电脑B远程连接电脑A的MySQL数据库。

默认情况下,mysql只允许本地登录,即只能在安装MySQL环境所在的主机下访问。

遇到CMD中mysql不是内部命令

将mysql的安装目录的下的bin目录添加至环境变量(用户和系统都添加)。

1
C:\Program Files\MySQL\MySQL Server 8.0\bin

进入mysql

1
mysql -uroot -p

查看MySQL当前远程访问权限配置

1
use mysql
1
select  User,authentication_string,Host from user;

默认情况下Host目录下只有localhost

开启远程访问权限

开启远程访问权限的方式,主要包括两种:改表法和授权法。

出于安全性考虑,尤其是正式环境下不推荐直接给root开启远程访问权限。建议做权限细分和限制。
正式环境中,推荐通过创建Mysq用户并给对应的用户赋权的形式来开放远程服务权限,并指定P地址,赋权时根据用户需求,在GRANTi命令中只开放slect、update等权限,做到权限粒度最小化。

一、改表法

顾名思义,该方法就是直接修改更改”mysq”数据库里的”user”表里的”host”项,从”localhost’”改为”%”。

1
update user set host='%' where user='root';

二、授权法

通过GRANT命令可以授予主机远程访问权限。

赋予任何主机访问权限:

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

允许指定主机(IP地址)访问权限:

1
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'root' WITH GRANT OPTION;

通过GRANTI命令赋权后,需要通过FLUSH PRIVILEGES刷新权限表使修改生效:

1
FLUSH PRIVILEGES;

再次查看MySQL:远程访问权限配置

1
select  User,authentication_string,Host from user;

查看root是否多了一条记录,且Host记录值为%,或者其他IP,代表已经开启了root的远程访问权限,后续就可以通过root用户远程访问该MySQL了。

MySQL管理工具:

Navicat,收费,很贵,个人使用不考虑;

dbeaver,中文支持友好,java编写,支持众多数据库,实际使用中很卡;

DataGrip,Jetbrains的产品,yyds,对学生无比友好,直接校园邮箱加学信网认证,畅享Jetbrains全系列产品,真的良心!同样支持主流数据库,自己用的为该数据库;

beekeeper studio;

PyCharm也可以。

引用B站某评论:

  1. 呃先用盗版的吧···img
  2. 不行啊!被发律师函了img
  3. 改用免费的吧img
  4. 免费的不好用手撸一个吧img
  5. 手撸的做的太极致了开源吧img
  6. 开源后出名了成立基金会了img
  7. 成立基金会后不用在做这些工作提桶跑路(✘)功成名就会见大佬探讨学术出任CEO登上人生巅峰(✔)img

参考链接

https://developer.aliyun.com/article/801237