当前位置: 首页 > news >正文

【踩坑】在linux服务器上配置mysql并开放3306端口

在做大作业,数据库零基础,折腾了一天才搞成功,特此记录一下踩过的坑。希望能帮到其他同学吧……
有不对欢迎指出,谢谢啦!

安装mysql

首先

sudo apt update
sudo apt install mysql-server -y

嗯,安装完了。
然后输入

sudo systemctl status mysql.service

如果看到:
在这里插入图片描述
尤其是这个绿绿的active,就表示已经启动了。
如果没有active的话,就手动输入命令:

sudo systemctl start mysql.service

修改密码

进入mysql

mysql -u root -p

其中-u后面是用户名,-p后面理论上是直接输入密码,但貌似mysql会建议你不要这么干。如果出现让你输密码的提示的话,直接回车即可,初始密码为空。
在这里插入图片描述
看到这样的界面就进入mysql的操作了。如果要退出,输入quit并回车即可。
然后在mysql中输入:

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

即可修改密码。123456是你准备改的密码(它可能会阻止你改成这么弱的密码,那就换个强点的密码吧)

远程编辑数据库

我的服务器没有图形化界面,所以为了方便起见,我用了mysql workbench来远程操作数据库。

去官网下载并安装,一路next就行没什么难的。

打开mysql workbench,点击加号。
在这里插入图片描述
然后填好信息,记得第二栏选Standard TCP/IP over SSH。
在这里插入图片描述
先点底下的Test Connection,如果弹出了OK的界面的话,再点最右侧的OK按钮
再点最右侧的OK按钮,最右侧的OK按钮,最右侧的OK按钮。重要的事说三遍。Test Connection只是检查是否能连上数据库的,点OK才能保存设置。
然后主界面的“Mysql Connection”应该就多了一个格子,双击即可进入远程数据库的编辑界面。

开放端口

本地mybatis没过ssh,连不上数据库,因此我们需要开放端口。
数据库的默认端口号是3306,不用改。
终端依次输入以下指令即可开放端口:

sudo apt-get install iptables
sudo iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
sudo iptables-save

然后可以安装一个netcat测试一下是否成功:

sudo apt-get install netcat
nc -zv 127.0.0.1 3306

以下是成功和失败的输出结果:
在这里插入图片描述
好,重点来了,你的本地机器想连服务器的数据库,当然是不能用127.0.0.1的,然而如果你nc -zv输入服务器ip地址,会发现Connection refused。
输入

netstat -an|grep 3306

红色的那一行,如果显示的是:::3306,表示可以对外开放。如果显示的是127.0.0.1:3306,表示只对本地开放。如果你是后者,那么跟着我继续应该就能成功解决了,否则……呃……再排排错找找教程?
在这里插入图片描述
首先我们需要编辑一个文件:

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

打开后长这样,如果你红框里的内容没有注释掉,将它注释掉。另外,如果你发现你的数据库端口不是3306,把prot=3306那句的注释去掉。
在这里插入图片描述
:wq保存并退出后,终端输入

service mysql restart

重启mysql,然后

netstat -an|grep 3306
nc -zv 服务器ip地址 3306

检查一下,都和上文说的结果一样,就表明3306端口开放成功。

开放数据库权限

接下来要对外开放数据库权限。
首先还是

mysql -u root -p

进mysql
然后输入:

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

再quit退出即可。

后记

对着防火墙折腾了个把小时才发现连不上是mysql配置文件的问题,端口只开放给本地了,枯了。
愿天堂对小白友好点。

相关文章:

  • JAVA基础(四十九)——自定义泛型
  • MySQL中的不等于
  • 【Redis】Redis高级:主从
  • 二进制方式安装k8s高可用集群(一)
  • Exception in thread main org.apache.ibatis.exceptions.PersistenceException:报错解决
  • mysql 数据库使用分享
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • 比较Hive数据库与MySQL数据库
  • PMP每日一练 | 考试不迷路-9.26(包含敏捷+多选)
  • 【Linux修炼】1.常见指令(上)
  • 文件上传-- Web渗透
  • Redis:13-Redis持久化之RDB
  • 洛谷:P6062 [USACO05JAN]Muddy Fields G
  • 七、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量控制
  • vue3 创建vue3模板
  • ES6指北【2】—— 箭头函数
  • [case10]使用RSQL实现端到端的动态查询
  • ES6简单总结(搭配简单的讲解和小案例)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 基于Android乐音识别(2)
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 深入浅出Node.js
  • 算法-插入排序
  • 王永庆:技术创新改变教育未来
  • 线性表及其算法(java实现)
  • 用Python写一份独特的元宵节祝福
  • UI设计初学者应该如何入门?
  • ​你们这样子,耽误我的工作进度怎么办?
  • (6)添加vue-cookie
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (学习日记)2024.01.19
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net core控制台应用程序初识
  • .NET Micro Framework初体验
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NetCore项目nginx发布
  • .Net多线程总结
  • .net经典笔试题
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET学习全景图
  • /boot 内存空间不够
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [CISCN2019 华东南赛区]Web11