Ubuntu安装Mysql+启用远程连接的完整过程

更新时间:2022-06-22 13:54:22

这篇文章主要介绍了Ubuntu如何安装Mysql+启用远程连接,用ssh客户端或者云服务器厂家提供的网页版控制台都行,只要你能连上服务器就行,需要的朋友可以参考下!

背景

用的是百度云的云服务器(其他云服务器同理),系统是Ubuntu 20.04 LTS,Mysql版本8.0+,需求是在Windows上开发,可以随时远程连接读写服务器上的Mysql

建立到服务器的远程连接

用ssh客户端或者云服务器厂家提供的网页版控制台都行,只要你能连上服务器就行

4e50562623a75ebfbc32cbabb9bd0981_2022061810383411.png

顺便私心推荐一个好看又好用的ssh客户端:NextSSH

用apt-get安装mysql

先更新一下apt仓库:

sudo apt-get update

顺便说一下,因为不知道你们用的都是什么账户,我也搞不清楚哪些指令权限要求比较高,所以我所有指令都加sudo了,这样不管是谁复制粘贴都能直接用,不会出现权限问题。然后安装mysql-server:

sudo apt-get install mysql-server -y

到这一步其实mysql就已经安完了并且自动启动了,可以看一下:

sudo service mysql status

64a3f24fc9a107692658eb3ec5c3f778_2022061810383412.png

设置root密码

此时mysql的root账户没有设置密码,可以直接用mysql指令登录:

cb0ad365c7d6c00971f330028364a86b_2022061810383413.png

设置一下root的密码(mynewpassword部分改成你自己要设置的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

49d1eeb92cb3ae4e5dddb28c18a53772_2022061810383414.png

退出,输入mysql指令发现不能直接登录了:

480b9cab60d93c6839e847d4764c68a5_2022061810383415.png

目前为止可以直接在服务器上用mysql了。

编辑配置文件监听远程连接

默认情况下,MySQL 数据库仅监听本地连接,如果想让外网远程连接到数据库,我们需要修改配置文件,让 MySQL 可以监听远程固定 ip 或者监听所有远程 ip。这里需要使用一个命令行文本编辑器,我用的vim所以就教一下vim,你们要是会nano或者别的自然知道该怎么弄,要是听不懂就照我的来。安装vim:

sudo apt-get install vim -y

然后用vim打开mysqld.cnf配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address = 127.0.0.1这一行:

d4488118f81d2f66335b367da338d19b_2022061810383416.png

这个值是127.0.0.1的时候只监听本地连接,改成0.0.0.0可以监听所有连接,或者也可以改成仅允许指定ip连接都可以。现在vim是阅读模式,按一下i进入编辑模式,然后用上下左右键定位到这行(最下面显示INSERT的时候表明处于编辑模式,按Esc可退出返回到阅读模式):

dcd4f5e2965f2eb410f32329113f55b8_2022061810383417.png

改完之后按Esc退出编辑模式,然后输入:wq保存退出。(若输入:q则退出但不保存)重启mysql service使刚才的修改生效:

sudo service mysql restart

允许root账号使用远程连接

mysql默认只允许root账号在本地使用,需要修改一下允许远程使用root账号(没试过其他账号的情况,但原理一致)。先登录mysql:

cb3c430a2dcd565e12e2f6b387e35ee5_2022061810383518.png

mysql -u root -p

输入密码,登录。然后选择mysql数据库:

use mysql;

293ad2765fcee4e961500d12094b28c8_2022061810383519.png

查看账号的主机权限:

select user, host from user;

58fb000adc783d46c6714aa5dc9014b2_2022061810383520.png

host处为localhost时只允许本地使用,改成%即可远程使用:

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

0ec8cb1ca39e54853c9a28a247f8a349_2022061810383521.png

退出mysql。

检查ubuntu自带的防火墙状态

sudo ufw status

d8b0473731b8cbebcdeab219897a58d8_2022061810383522.png

如果是inactive说明防火墙没开,那就不用管了。防火墙是干嘛的呢,我自己的理解就是,如果开了防火墙,那服务器上所有端口都是默认禁止连接的,只有你允许的端口才允许连接,类似于这种:

7886e8ae4d75f97f0602ce1b759a0995_2022061810383523.png

所以如果防火墙开了,那要么把防火墙直接关了:

sudo ufw disable

要么添加一条规则让防火墙放行3306端口(mysql的默认端口):

sudo ufw allow 3306

检查云服务器厂商的防火墙状态

打开云服务器的后台管理页面,找到防火墙:

3e817b39fe35aef6e81245650d53a2e2_2022061810383524.png

云服务器厂商默认只开启几个最常用的端口,其他端口都是默认关闭的,所以也要在这里添加一条规则放行3306端口:

d870711cc0ced4ede852c34d2cc4d9a2_2022061810383525.png

测试连接

随便找个数据库管理的软件测试一下:

749f88936d07edb44a25e06c3e798af2_2022061810383526.png

就连上了。常见的问题应该都提到了,如果还是连不上那你们再想想办法吧。

UbuntuMysql