关于ubuntu20.04:ubuntu-2004-Desktop-mysql8最方便的安装方法进行安全加固创建允许远程用户访问

4次阅读

共计 2310 个字符,预计需要花费 6 分钟才能阅读完成。

文章背景

ubuntu 20.04 默认反对 mysql8,不反对 mysql5。Ubuntu 20 apt 源的 mysql server 的最新版本已更新到 mysql8.0.27,咱们能够间接通过 apt 命令来装置!

顺带一提,某些 过期 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. 近程拜访。
OS Ubuntu 20.04.3 LTS Desktop Ubuntu 桌面零碎

具体步骤

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

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

2. 应用 apt 命令装置 mysql-server

应用上面的命令间接装置 mysql-server

sudo apt update
sudo apt install mysql-server

装置实现后,mysql 服务会主动启动。应用 systemctl status 命令来查看 mysql 服务的状态。

好耶!装置胜利~

3. auth_socket 身份验证机制

如同 Ubuntu 零碎个别,mysql 的默认超级用户也是 root。
在 mysql8 中,root 默认应用 auth_socket plugin 进行身份验证。

这种验证形式不要求输出明码,即便输出了明码也不验证,如下图。

这个特点让很多人感觉很不平安,理论认真钻研一下这种形式,还是平安的,因为它有另外两个限度:只能用 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

创立 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 只能看到 QingYaninformation_schema 两个数据库,这阐明咱们的设置失效了。

show databases;

6. 近程拜访

事实上,以上的步骤都是在 localhost 拜访。
如果这时在近程拜访,会发现,拜访被回绝。
这是因为 mysql 的配置文件中 /etc/mysql/mysql.conf.d/mysqld.cnf bind-address127.0.0.1 换回地址,只会监听来自本地的申请,咱们将其改为 0.0.0.0,监听所有起源的申请。

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

重启使配置失效。

service mysql restart

好耶!!!能够近程拜访了!!

致谢

  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 创立用户与受权
正文完
 0