3

如何在 Ubuntu 18.04 上安装 MySQL

 1 year ago
source link: https://blog.p2hp.com/archives/10286
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux、ApacheMySQL、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 上,默认情况下只有最新版本的 MySQL 包含在 APT 包存储库中。在撰写本文时,这是 MySQL 5.7

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

  1. sudo apt update

然后安装默认包:

  1. sudo apt install mysql-server

使用以下命令确保服务器正在运行systemctl start

  1. sudo systemctl start mysql.service

这些命令将安装并启动 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

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

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

在运行 MySQL 5.7(及更高版本)的 Ubuntu 系统中, 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:

或者,有些人可能会发现使用专用用户连接到 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:

最后,让我们测试一下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,该工具是一个允许您运行管理命令的客户端。例如,此命令表示以根用户身份连接到 MySQL ( -u root),提示输入密码 ( -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 已启动并正在运行。

您现在已经在服务器上安装了基本的 MySQL 设置。以下是您可以采取的后续步骤的一些示例:

via https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK