当前位置:首页 > 文章列表 > 数据库 > 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基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    514次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    658次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    668次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    687次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    756次使用
  • 迅捷AIPPT:AI智能PPT生成器,高效制作专业演示文稿
    迅捷AIPPT
    迅捷AIPPT是一款高效AI智能PPT生成软件,一键智能生成精美演示文稿。内置海量专业模板、多样风格,支持自定义大纲,助您轻松制作高质量PPT,大幅节省时间。
    646次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码