关于MySQL的远程连接的一些总结
MySQL是目前非常流行的数据库之一,也是中小企业持久化存储的首选数据库。
本篇介绍如何远程连接 MySQL,以及在不同版本(5.x,8.x)上远程连接方式的不同。
前言
不同于我们日常学习,在实际应用中,MySQL服务都会挂载在某台服务器上。如果MySQL部署在某台云服务器上,这样一来,操纵数据库每次都需要先连接服务器,再进入数据库操作,不是很方便。
于是,学习远程连接 MySQL 的方法是数据库在服务器上时的必修课。
但为了安全考虑,MySQL的远程连接并不是一键容易事,特别是在MySQL8.x版本时,下面会介绍到。
准备工作
在这个阶段,确保你已经进入了你想要远程访问的数据库服务中,通常的界面如下:
放行远程主机访问
通常来说,MySQL只允许用户在本地主机访问。通过查询 user
表,也可以看到允许的主机信息:
select host,user from mysql.user |
host
字段下面的 localhost
代表只接受本地主机。
所以,我们的工作就很清晰了,就是修改访问权限信息,使得指定的用户能够接受远程访问。通常来说,我们有两种方式实现这个效果。
第一种:改账号权限(建议)
既然远程主机没有权限连接,我们可以通过 GRANT 语句修改指定用户的权限。
GRANT 语句的语法大致为:GRANT 权限 ON 数据库对象 TO 用户。
授予对所有数据库操作的所有权限给任何主机(’%’)访问的 root
用户 ,这样任何连接到该数据库的root用户的能访问所有信息。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; |
刷新权限:
flush privileges; |
再次查询,可以发现会新增一条记录,host
字段下的 %
表示任何主机:
如果只是想授予某个单独的主机访问权限,则 %
可以修改为指定的 IP:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.28.71' IDENTIFIED BY |
效果类似:
刷新权限:
flush privileges; |
第二种:改表法
使用 GRANT 语句的方法是直接添加一条新记录,我个人建议按上面的方式做。
但是,我们同样可以采用直接修改 user
为 root
的host
字段内容,直接使用 UPDATE
语句修改表:
UPDATE mysql.user SET host = '%' WHERE user = 'root'; |
刷新权限:
flush privileges; |
效果如图,直接修改 host
字段值,而不是添加。
到这一步,大多数情况下,我们就可以使用数据库工具如:Web SQLyog、Navicat、Dbeaver等等连接上我们的远程数据库了。
MySQL 8.x 的注意点
但请注意,如果你的 MySQL 版本是 8.x的话,由于密码加密方式的不同,连接时可能会出现如下提示:
因此,我们必须 修改加密方式 以实现远程连接,使用 ALTER
语句:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; |
最后不要忘了刷新权限:
flush privileges; |
OK,教程整体到这里就结束了,如果遇到什么问题,欢迎大家在评论区发表看法
参考
mysql开启远程连接