如何在 Ubuntu 18.04 上安装 MySQL

介绍

MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。它使用关系数据库和 SQL(结构化查询语言)来管理其数据。

安装的简短版本很简单:更新你的包索引,安装mysql-server包,然后运行包含的安全脚本。

 
  
  1. sudo apt update
  2. sudo apt install mysql-server
  3. sudo mysql_secure_installation
复制

本教程将解释如何在 Ubuntu 18.04 服务器上安装 MySQL 5.7 版。但是,如果您希望将现有的 MySQL 安装更新到版本 5.7,则可以改为阅读此 MySQL 5.7 更新指南

先决条件

要遵循本教程,您将需要:

第 1 步 — 安装 MySQL

在 Ubuntu 18.04 上,默认情况下,APT 软件包存储库中仅包含最新版本的 MySQL。在撰写本文时,这是 MySQL 5.7

要安装它,请使用以下命令更新服务器上的包索引apt

 
  
  1. sudo apt update
复制

然后安装默认包:

 
  
  1. sudo apt install mysql-server
复制

这将安装 MySQL,但不会提示您设置密码或进行任何其他配置更改。因为这会使您的 MySQL 安装不安全,我们将在接下来解决这个问题。

第 2 步 — 配置 MySQL

对于全新安装,您需要运行包含的安全脚本。这会更改一些不太安全的默认选项,例如远程 root 登录和示例用户。在旧版本的 MySQL 上,您还需要手动初始化数据目录,但现在这是自动完成的。

运行安全脚本:

 
  
  1. sudo mysql_secure_installation
复制

这将引导您完成一系列提示,您可以在其中对 MySQL 安装的安全选项进行一些更改。第一个提示将询问您是否要设置验证密码插件,该插件可用于测试 MySQL 密码的强度。无论您如何选择,下一个提示都是为 MySQL root用户设置密码。输入然后确认您选择的安全密码。

从那里,您可以按Y和 然后ENTER接受所有后续问题的默认设置。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即尊重您所做的更改。

要初始化 MySQL 数据目录,您将使用mysql_install_db5.7.6 之前的版本以及mysqld --initialize5.7.6 及更高版本。但是,如果您从 Debian 发行版安装 MySQL,如步骤 1 所述,数据目录会自动初始化;你不必做任何事情。如果您仍然尝试运行该命令,您将看到以下错误:

输出
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
. . .
2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

请注意,即使您为MySQL用户设置了密码,该用户也未配置为在连接到 MySQL shell 时使用密码进行身份验证。如果您愿意,可以按照步骤 3 调整此设置。

第 3 步 - (可选)调整用户身份验证和权限

在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中,root MySQL 用户auth_socket默认设置为使用插件进行身份验证,而不是使用密码。在许多情况下,这允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)访问用户时,它也会使事情变得复杂。

为了使用密码以root身份连接到 MySQL ,您需要将其身份验证方法从 切换auth_socketmysql_native_password。为此,请从终端打开 MySQL 提示符:

 
  
  1. sudo mysql
复制

接下来,使用以下命令检查每个 MySQL 用户帐户使用的身份验证方法:

 
  
  1. SELECT user,authentication_string,plugin,host FROM mysql.user;
复制
 
 
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

在此示例中,您可以看到root用户实际上使用auth_socket插件进行了身份验证。要将root帐户配置为使用密码进行身份验证,请运行以下ALTER USER命令。请务必更改password为您选择的强密码,并注意此命令将更改您在步骤 2 中设置的root密码:

 
  
  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
复制

然后,运行FLUSH PRIVILEGES告诉服务器重新加载授权表并使新更改生效:

 
  
  1. FLUSH PRIVILEGES;
复制

再次检查每个用户使用的身份验证方法,以确认root不再使用auth_socket插件进行身份验证:

 
  
  1. SELECT user,authentication_string,plugin,host FROM mysql.user;
复制
 
 
Output
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)

您可以在此示例输出中看到root MySQL 用户现在使用密码进行身份验证。一旦你在你自己的服务器上确认了这一点,你就可以退出 MySQL shell:

 
  
  1. exit
复制

或者,有些人可能会发现使用专用用户连接到 MySQL 更适合他们的工作流程。要创建这样的用户,请再次打开 MySQL shell:

 
  
  1. sudo mysql
复制

注意:如果您为root启用了密码验证,如前几段所述,您将需要使用不同的命令来访问 MySQL shell。以下将以常规用户权限运行您的 MySQL 客户端,并且您只能通过身份验证获得数据库内的管理员权限:

 
   
  1. mysql -u root -p
复制

从那里,创建一个新用户并给它一个强密码:

 
  
  1. CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
复制

然后,授予您的新用户适当的权限。例如,您可以使用以下命令授予用户对数据库中所有表的权限,以及添加、更改和删除用户权限的权力:

 
  
  1. GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
复制

请注意,此时,您不需要FLUSH PRIVILEGES再次运行该命令。INSERT仅当您使用、UPDATE或等语句修改授权表时才需要此命令DELETE。因为您创建了一个新用户,而不是修改现有用户,FLUSH PRIVILEGES所以这里没有必要。

在此之后,退出 MySQL shell:

 
  
  1. exit
复制

最后,让我们测试一下 MySQL 的安装。

第 4 步 — 测试 MySQL

不管你如何安装它,MySQL 应该已经开始自动运行了。要对此进行测试,请检查其状态。

 
  
  1. systemctl status mysql.service
复制

您将看到类似于以下内容的输出:

输出
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since Wed 2018-04-23 21:21:25 UTC; 30min ago
 Main PID: 3754 (mysqld)
    Tasks: 28
   Memory: 142.3M
      CPU: 1.994s
   CGroup: /system.slice/mysql.service
           └─3754 /usr/sbin/mysqld

如果 MySQL 没有运行,您可以使用sudo systemctl start mysql.

要进行额外检查,您可以尝试使用该mysqladmin工具连接到数据库,该工具是一个允许您运行管理命令的客户端。例如,此命令表示以root ( -u root) 身份连接到 MySQL,提示输入密码 ( -p),然后返回版本。

 
  
  1. sudo mysqladmin -p -u root version
复制

您应该会看到与此类似的输出:

输出
mysqladmin  Ver 8.42 Distrib 5.7.21, for Linux on x86_64
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		5.7.21-1ubuntu1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			30 min 54 sec

Threads: 1  Questions: 12  Slow queries: 0  Opens: 115  Flush tables: 1  Open tables: 34  Queries per second avg: 0.006

这意味着 MySQL 已启动并正在运行。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值