良许Linux教程网 干货合集 Linux系统远程连接MySQL数据库命令

Linux系统远程连接MySQL数据库命令

大家都知道,MySQL 数据库默认 root 用户只能本地访问,不能远程连接管理,但是实际工作中,我们又常常会有这样的需求,远程对数据库进行管理,那么 Linux 该如何开启 MySQL 远程连接呢?下面这边文章就给大家介绍一下 Linux 下实现远程连接 MySQL 数据库的方法教程。

首先需要本地已经安装好数据库,并确认本地可以正常登录

$ mysql -uroot -p
Enter password: 此处输入密码
image-20201114174901841
image-20201114174901841

现在运行数据服务的服务器地址为 188.131.137.xxx,而我现在的需求是想让另一台机器(地址为:81.71.29.xxx)可以远程登录管理这台数据库服务器。在 Linux 系统中,如果需要远程连接登录 MySQL 数据库时,必须为 IP 和具体用户进行授权。再授权之前首先我们先看本地数据库的用户表,了解一下目前允许登录的具体用户:

mysql> select host,user from mysql.user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+

输出结果中,我们可以看到现在只有 ” root@’localhost’ “ 这个用户可以登录,所以为了满足我们的需求,就需要先创建一个可以远程登录的用户,具体创建用户的方法如下(此处我们创建一个 remote 的用户,让它可以远程登录管理我们的数据库):

mysql> create user remote@'81.71.29.100' identified by 'remotepass';
Query OK, 0 rows affected (0.01 sec)

mysql> grant select on *.* to remote;
Query OK, 0 rows affected (0.01 sec)

以上两句的意思就是创建一个 remote 用户,并设置密码为 remotepass;第二句命令的意思就是给这个用户授权对所有的库表都有 select 权限,select 是查询权限,可以查看一些库表的信息,不会对数据库有什么更改,比较安全。另外,以上两句命令执行完毕后,可以在执行一下刷新的命令,表示让做出的更改都即时生效。

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

本地数据库的操作都已经完成,接着我们来到 81.71.29.xxx 这台服务器上,执行数据库连接操作,如下:

# mysql -uremote -p -h188.131.137.253
image-20201114195420167
image-20201114195420167

执行之后出现了报错,根据报错可以看到是因为 MySQL 8.0 之后用户名加密方式改为了 ‘caching_sha2_password’,所以需要修改加密方式,那么我们再回来本地运行数据库的服务器进行修改:

mysql> alter user remote@'81.71.29.100' identified with mysql_native_password by 'remotepass';
Query OK, 0 rows affected (0.04 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

修改并刷新之后,再次测试可以成功登录进去:

image-20201114195814181
image-20201114195814181

以上就是远程连接数据库的测试过程,并且过程中遇到的错误也得到解决,这里需要提醒大家的是:数据库上的信息都是敏感操作,所以对每个用户都要做好限制,不可以给到过于大的权限,尤其是涉及到更新、修改、删除操作时一定要谨慎。

最后需要补充一点,在操作之前记得先确认一下 MySQL 服务器的状态,看 MySQL 是否正常启动或者是否处于正常运行的状态:

systemctl status mysqld.service  查看 MySQL 状态,running 表示运行中
systemctl start mysqld.service  启动 MySQL
systemctl stop mysqld.service  停止 MySQL
systemctl restart mysqld.service 重启 MySQL

另外,还可以通过查看监听套接字的状态来核实,正常来说 MySQL 的默认端口都是 3306,可以通过 ” ss -tlnp ” 或者 ” netstat -antp ” 来确认。

$ ss -tlnp
$ netstat -antp
image-20201117000430511
image-20201117000430511
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部