[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

唉。下面是我花了不知道多少个小时踩过的所有坑总结出来的血泪史,希望能帮你们少踩一些坑吧,正常来讲一步一步下来就不会出现任何问题了。

背景

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

建立到服务器的远程连接

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

顺便私心推荐一个好看又好用的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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

设置root密码

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

目前为止可以直接在服务器上用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这一行:

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

sudo service mysql restart

允许root账号使用远程连接

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]
mysql -u root -p

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

use mysql;

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

查看账号的主机权限:

select user, host from user;

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

刷新权限:

FLUSH PRIVILEGES;

退出mysql。

检查ubuntu自带的防火墙状态

sudo ufw status

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

sudo ufw disable

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

sudo ufw allow 3306

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

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

测试连接

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

[Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

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

Original: https://www.cnblogs.com/m1ds/p/16386828.html
Author: m1ds
Title: [Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619505/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • English words chapter 20220927

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16736392.html Or…

    数据库 2023年6月11日
    074
  • JDBC

    JDBC 一、JDBC概述 什么是JDBC? JDBC 是使用 Java 语言操作关系型数据库的一套 API。这套 API 是交由不同的数据库厂商实现的。我们利用 JDBC 编写操…

    数据库 2023年5月24日
    074
  • Hbase中(java.io.IOException: Could not locate executable nullbinwinutils.exe in the Hadoop binarie)

    报错信息如下: 结合大神分析,应该为本机使用Hbase时,没有配置其环境变量。 出处:https://www.cnblogs.com/jessezeng/p/5520915.htm…

    数据库 2023年6月11日
    068
  • 外卖项目

    项目介绍: 本项目,瑞吉外卖是专门为餐饮企业,餐厅,饭店定制的一款软件产品,包括系统管理,后台和移动端应用两部分,其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品,…

    数据库 2023年6月16日
    094
  • 自然对数

    https://zhuanlan.zhihu.com/p/71928040自然对数 https://www.youtube.com/watch?v=mZE0RmCbDe8 本文来自…

    数据库 2023年6月11日
    0105
  • Java基础七—Java并发基础

    一个类在可以被多个线程安全调用时就是线程安全的。 线程安全不是一个非真即假的命题,可以将共享数据按照安全程度的强弱顺序分成以下五类: 不可变、绝对线程安全、相对线程安全、线程兼容和…

    数据库 2023年6月6日
    0239
  • django中的auth模块与admin后台管理

    1. auth模块 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_user的表,当访问django自带的路由admin的时候,需…

    数据库 2023年6月14日
    082
  • Java的Lambda表达式

    函数式编程(Functional Programming)是把函数作为基本运算单元,函数可以作为变量,可以接收函数,还可以返回函数。历史上研究函数式编程的理论是Lambda演算,所…

    数据库 2023年6月9日
    086
  • 2022-9-2 cookie 和 session

    当客户端关闭后,服务器不关闭,两次获取session是否为同一个?默认情况下。不是。 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cooki…

    数据库 2023年6月14日
    086
  • 系统发布springboot项目

    首先把项目终止服务,但这样的做法不是很好,也可以来个配置文件 1.查看运行的java文件有哪些,位置在哪里,端口号是多少 ps -ef | grep java 2.结束端口进程的运…

    数据库 2023年6月6日
    075
  • 4_爬NMPA药监总局_动态加载_传ID

    http://scxk.nmpa.gov.cn:81/xk/ import requests url = ‘http://scxk.nmpa.gov.cn:81/xk/itowne…

    数据库 2023年6月11日
    084
  • MySQL查询性能优化七种武器之链路追踪

    MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但我们并不确切地知道为什么使用这个索引。 [En] But we don&…

    数据库 2023年5月24日
    065
  • tiler–python实现的有趣的自定义马赛克图像拼接工具

    最近在github中发现了一个有趣的小工具,tiler github链接https://github.com/nuno-faria/tiler 具体介绍请直接去github,这里只…

    数据库 2023年6月11日
    076
  • Digester解析xml原理

    Tomcat内部是使用Digester来解析xml文件的,将xml转化为java对象。 digester底层是基于SAX+事件驱动+栈的方式来搭建实现的,SAX主要用来解析xml,…

    数据库 2023年6月16日
    069
  • 在Debian系统上安装StoneDB数据库

    今天我会进行StoneDB数据库在Debian系统下的安装。官方文档中没有说明在Debian系统的安装步骤,我来试试能否顺利安装。 准备Debian系统 我是在本地使用虚拟机安装的…

    数据库 2023年5月24日
    064
  • Linux 目录

    以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放的是启动 Linux 时使用的…

    数据库 2023年6月6日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球