当前位置:首页 > 文章列表 > 数据库 > MySQL > Ubuntu 20.04 Desktop mysql8:最方便的安装方法,进行安全加固,创建允许远程用户访问

Ubuntu 20.04 Desktop mysql8:最方便的安装方法,进行安全加固,创建允许远程用户访问

来源:SegmentFault 2023-02-24 15:23:34 0浏览 收藏

小伙伴们对数据库编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Ubuntu 20.04 Desktop mysql8:最方便的安装方法,进行安全加固,创建允许远程用户访问》,就很适合你,本篇文章讲解的知识点主要包括MySQL、ubuntu20.04。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

文章背景

ubuntu 20.04 默认支持 mysql8 ,不支持 mysql5 。Ubuntu 20 apt源的 mysql server 的最新版本已更新到

mysql8.0.27
,我们可以直接通过
apt
命令来安装!

image.png

顺带一提,某些

过时
mysql 5 安装教程
中,也是通过
apt
命令来安装最新的
mysql 5.7.35
,但在
Ubuntu
仓库更新到
mysql 8
之后,该类教程已经
失效
了。

mysql 5.7.35
默认只支持到
Ubuntu 18.04 
, 还请读者注意,除非不得已,不要使用过时的版本。

基于安全考虑,本文还介绍了一些笔者用到的安全措施。

文章目标

  1. 换国内源+更新软件源;
  2. 使用 apt 命令安装 mysql-server ;
  3. auth_socket 身份验证机制;
  4. mysql 安全加固检查;
  5. 创建独立用户,允许远程访问,分配合理的权限;
  6. 开放远程访问之 bind-address 设置;
  7. 开放远程访问之防火墙放行 3306 端口。

详细步骤

1. 换国内源+更新软件源

Ubuntu 20.04.3 桌面版换源的两种方法

2. 使用 apt 命令安装 mysql-server

使用下面的命令直接安装

mysql-server

sudo apt update
sudo apt install mysql-server

安装完成后,mysql 服务会自动启动。使用

systemctl status
命令来查看 mysql 服务的状态。

image.png

好耶!安装成功~

3. auth_socket 身份验证机制

如同 Ubuntu 系统一般, mysql 的默认超级用户也是 root 。
在 mysql8 中,root 默认使用

auth_socket plugin
进行身份验证。

image.png

这种验证方式不要求输入密码,即使输入了密码也不验证,如下图。

image.png

这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,还是安全的,因为它有另外两个限制:只能用 UNIX 的 socket 方式登陆,这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQL 的 root 用户,必须用操作系统的 root 用户登陆。
(第二个限制存疑,笔者的超级用户不是 root ,但已然可以使用 auth_socket 插件登陆 root )

作为 mysql 官方推荐的身份验证插件,

auth_socket
是足够安全的,为了安全考虑,我们不要修改其配置。

4. mysql 安全加固检查

运行

mysql_secure_installation
进行安全检查。
  • VALIDATE PASSWORD COMPONENT 密码检查组件(可选),测试用户密码强度,要求用户设置足够强的密码
  • Create Root Password 创建root密码
  • Remove Anonymous Users 移除匿名用户,在生产环境中应禁止匿名用户登陆
  • Disable Remote Root Login 禁止远程 Root 登陆
  • Remove Test Database 移除测试数据库,在生产环境中应移除
  • Reload Privilege Tables 重新加载权限表,让上面的修改立即生效

5. 创建独立用户,允许远程访问,分配一定的权限

虽然是在测试环境,但必要的安全措施还是要遵守的。
笔者创建一个独立用户用于

远程访问
,理论上我们应设置远程访问的
ip白名单
,mysql也提供了这个功能,但在本教程中不设置,读者如果有较高的安全需求,可以在防火墙和应用进行相应的设置。

首先,使用3中提到的

root
+
auth_socket
登陆 mysql 。

sudo mysql

image.png

创建

QingYan
数据库测试用。

CREATE DATABASE IF NOT EXISTS qingyan;

创建新用户

ninesun
,设置密码。

CREATE USER 'ninesun'@'%' IDENTIFIED BY '123456';

赋予它在任意主机上对 qingyan 数据库的所有权限。

GRANT ALL PRIVILEGES ON qingyan.* TO 'ninesun'@'%';

有的教程中,使用

grant
命令,一行命令可以创建用户并赋予权限,在 mysql 8 会报错,请按照先创建用户再分配权限,两步完成。

刷新权限表,我们的权限设置生效了!

FLUSH PRIVILEGES;

验证一下,使用组合键

ctrl + C
或输入
exit
退出当前用户,使用
ninesun
账户输入密码登陆。

mysql -u ninesun -p

使用下面的命令列出数据库,会发现

ninesun
只能看到
QingYan
information_schema
两个数据库,这说明我们的设置生效了。

show databases;

image.png

6. 开放远程访问之 bind-address 设置

事实上,以上的步骤都是在 localhost 访问。
如果这时在远程访问,会发现,访问被拒绝。
这是因为 mysql的配置文件中

/etc/mysql/mysql.conf.d/mysqld.cnf 
bind-address
127.0.0.1
换回地址,只会监听来自本地的请求,我们将其改为
0.0.0.0
,监听所有来源的请求。

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

image.png

重启使配置生效。

service mysql restart

7. 开放远程访问之防火墙放行 3306 端口

笔者的服务器开启了

ufw
防火墙,需要放行 mysql 端口
3306
才能够在远程访问,如果不做这一步,会遇到
access deny
错误。

sudo ufw allow 3306

运行下面的命令,可以查看

ufw
的端口配置。

sudo ufw status

好耶!!!现在我们可以远程访问了!!

致谢

  1. How To Install & Secure MySQL Server on Ubuntu 20.04
  2. 故障分析 | 正确使用 auth_socket 验证插件
  3. MySQL auth_socket 验证插件的工作原理
  4. MySQL教程:MySQL数据库学习宝典(从入门到精通)
  5. MySQL 8.0.15版本,给用户分配访问权限提示 your MySQL server version for the right syntax to use near 'IDENTIFIED
  6. MySQL8 创建用户与授权

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

版本声明
本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
亿级数据量系统优化思考亿级数据量系统优化思考
上一篇
亿级数据量系统优化思考
水平分表和垂直分表
下一篇
水平分表和垂直分表
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 笔灵AI生成答辩PPT:高效制作学术与职场PPT的利器
    笔灵AI生成答辩PPT
    探索笔灵AI生成答辩PPT的强大功能,快速制作高质量答辩PPT。精准内容提取、多样模板匹配、数据可视化、配套自述稿生成,让您的学术和职场展示更加专业与高效。
    10次使用
  • 知网AIGC检测服务系统:精准识别学术文本中的AI生成内容
    知网AIGC检测服务系统
    知网AIGC检测服务系统,专注于检测学术文本中的疑似AI生成内容。依托知网海量高质量文献资源,结合先进的“知识增强AIGC检测技术”,系统能够从语言模式和语义逻辑两方面精准识别AI生成内容,适用于学术研究、教育和企业领域,确保文本的真实性和原创性。
    22次使用
  • AIGC检测服务:AIbiye助力确保论文原创性
    AIGC检测-Aibiye
    AIbiye官网推出的AIGC检测服务,专注于检测ChatGPT、Gemini、Claude等AIGC工具生成的文本,帮助用户确保论文的原创性和学术规范。支持txt和doc(x)格式,检测范围为论文正文,提供高准确性和便捷的用户体验。
    30次使用
  • 易笔AI论文平台:快速生成高质量学术论文的利器
    易笔AI论文
    易笔AI论文平台提供自动写作、格式校对、查重检测等功能,支持多种学术领域的论文生成。价格优惠,界面友好,操作简便,适用于学术研究者、学生及论文辅导机构。
    38次使用
  • 笔启AI论文写作平台:多类型论文生成与多语言支持
    笔启AI论文写作平台
    笔启AI论文写作平台提供多类型论文生成服务,支持多语言写作,满足学术研究者、学生和职场人士的需求。平台采用AI 4.0版本,确保论文质量和原创性,并提供查重保障和隐私保护。
    35次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码