前些天发现了一个巨牛的人工智能学习网站,普通易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
MySQL 是一个开源的数据库管理体系,通常作为流行的 LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。它实现了关系模子,并利用布局化查询语言(更为人所知的是 SQL)来管理其数据。
本教程将介绍如安在 Ubuntu 20.04 服务器上安装 MySQL 8.0 版本。完成本教程后,您将拥有一个可用于构建下一个网站或应用程序的工作关系型数据库。
先决条件
要按照本教程操纵,您需要:
- 一个安装了 Ubuntu 20.04 的服务器,具有非根管理员用户和已设置了 UFW 防火墙。要设置这些,请按照我们的 Ubuntu 20.04 初始服务器设置指南进行操纵。
步调 1 — 安装 MySQL
在 Ubuntu 20.04 上,您可以利用 APT 软件包存储库安装 MySQL。在撰写本文时,默认 Ubuntu 存储库中可用的 MySQL 版本是 8.0.27。
要安装它,请在服务器上更新软件包索引(如果您最近没有这样做):
然后安装 mysql-server 软件包:
- sudo apt install mysql-server
复制代码 利用 systemctl start 命令确保服务器正在运行:
- sudo systemctl start mysql.service
复制代码 这些命令将安装并启动 MySQL,但不会提示您设置暗码或进行任何其他设置更改。由于这会使您的 MySQL 安装不安全,接下来我们将办理这个题目。
步调 2 — 设置 MySQL
对于 MySQL 的新安装,您需要运行 DBMS(数据库管理体系)附带的安全脚本。此脚本会更改一些较不安全的默认选项,比方远程 root 登录和示例用户。
利用 sudo 运行安全脚本:
- sudo mysql
- _secure_installation
复制代码 这将引导您完成一系列提示,您可以在其中对 MySQL 安装的安全选项进行一些更改。第一个提示将询问您是否要设置验证暗码插件,该插件可用于测试新 MySQL 用户的暗码强度,以确定其是否有用。
如果选择设置验证暗码插件,您创建的任何利用暗码进行身份验证的 MySQL 用户都将需要具有符合您选择的策略的暗码。最强的策略级别 — 您可以通过输入 2 来选择 — 将要求暗码至少为八个字符,并包含大写字母、小写字母、数字和特殊字符:
- Securing the MySQL server deployment.
- Connecting to MySQL using a blank password.
- VALIDATE PASSWORD COMPONENT can be used to test passwords
- and improve security. It checks the strength of password
- and allows the users to set only those passwords which are
- secure enough. Would you like to setup VALIDATE PASSWORD component?
- Press y|Y for Yes, any other key for No: Y
- There are three levels of password validation policy:
- LOW Length >= 8
- MEDIUM Length >= 8, numeric, mixed case, and special characters
- STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
- Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
- 2
复制代码 无论您是否选择设置验证暗码插件,下一个提示将是为 MySQL root 用户设置暗码。输入然后确认您选择的安全暗码:
- Please set the password for root here.
- New password:
- Re-enter new password:
复制代码 请留意,纵然您为 root MySQL 用户设置了暗码,但此用户当前未设置为在连接到 MySQL shell 时利用暗码进行身份验证。
如果您利用了验证暗码插件,您将收到有关新暗码强度的反馈。然后脚本将询问您是否要继续利用刚刚输入的暗码,或者是否要输入新暗码。假设您对刚刚输入的暗码强度感到满意,请输入 Y 继续运行脚本:
- Estimated strength of the password: 100
- Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
复制代码 然后,您可以按 Y,然后按 ENTER 来接受所有后续题目的默认值。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即服从您所做的更改。
脚本完成后,您的 MySQL 安装将得到保护。现在,您可以继续创建一个利用 MySQL 客户端的专用数据库用户。
步调 3 — 创建专用 MySQL 用户并授予权限
在安装时,MySQL 创建了一个 root 用户帐户,您可以利用它来管理数据库。此用户对 MySQL 服务器拥有完全权限,这意味着它对每个数据库、表、用户等都有完全控制。因此,最好制止在管理功能之外利用此帐户。本步调概述了怎样利用 root MySQL 用户创建新用户帐户并授予其权限。
在运行 MySQL 5.7(以及更高版本)的 Ubuntu 体系中,默认环境下,root MySQL 用户设置为利用 auth_socket 插件进行身份验证,而不是利用暗码。此插件要求调用 MySQL 客户端的操纵体系用户的名称与命令中指定的 MySQL 用户的名称匹配,因此您必须以 sudo 权限调用 mysql 以访问 root MySQL 用户:
一旦您可以访问 MySQL 提示符,您就可以利用 CREATE USER 语句创建新用户。其一般语法如下:
- CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
复制代码 在 CREATE USER 之后,您指定一个用户名。紧接着是一个 @ 符号,然后是此用户将连接的主机名。如果您只操持从 Ubuntu 服务器当地访问此用户,可以指定 localhost。将用户名和主机名都放在单引号中并不总是须要的,但这样做有助于防止错误。
在选择用户的身份验证插件时,您有几个选项。前面提到的 auth_socket 插件大概很方便,由于它提供了强大的安全性,而无需有用用户输入暗码即可访问数据库。但它也会阻止远程连接,这大概会使外部程序需要与 MySQL 交互时变得复杂。
作为替代,您可以完全省略语法中的 WITH authentication_plugin 部分,以利用户利用 MySQL 的默认插件 caching_sha2_password 进行身份验证。MySQL 文档推荐此插件,由于它具有强大的安全功能,适合希望利用暗码登录的用户。
运行以下命令以创建一个利用 caching_sha2_password 进行身份验证的用户。确保将 sammy 更改为您喜欢的用户名,password 更改为您选择的强暗码:
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
复制代码 创建新用户后,您可以授予他们得当的权限。授予权限的一般语法如下:
- GRANT PRIVILEGE ON database.table TO 'username'@'host';
复制代码 此示例语法中的 PRIVILEGE 值定义了用户在指定的 database 和 table 上答应实行的操纵。您可以通过用逗号分隔每个权限来在一条命令中向同一用户授予多个权限。您还可以通过在数据库和表名称的位置输入星号(*)来全局授予权限。在 SQL 中,星号是用于表现“所有”数据库或表的特殊字符。
举例来说,以下命令授予用户全局权限,可以在服务器上的任何表上实行 CREATE、ALTER 和 DROP 数据库、表和用户的操纵,以及利用 INSERT、UPDATE 和 DELETE 从任何表中插入、更新和删除数据的权限。它还授予用户利用 SELECT 查询数据、利用 REFERENCES 关键字创建外键,以及利用 RELOAD 权限实行 FLUSH 操纵的本领。但是,您应该只授予用户他们需要的权限,因此可以根据需要调解自己用户的权限。
您可以在官方 MySQL 文档中找到可用权限的完备列表。
运行此 GRANT 语句,将 sammy 替换为您自己的 MySQL 用户名称,以向您的用户授予这些权限:
- GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
复制代码 请留意,此语句还包罗 WITH GRANT OPTION。这将答应您的 MySQL 用户向体系上的其他用户授予任何权限。
接下来,最好运行 FLUSH PRIVILEGES 命令。这将释放由于前面的 CREATE USER 和 GRANT 语句而服务器缓存的任何内存:
然后您可以退出 MySQL 客户端:
未来,要以新的 MySQL 用户身份登录,您将利用雷同以下的命令:
-p 标志将导致 MySQL 客户端提示您输入 MySQL 用户的暗码以进行身份验证。
末了,让我们测试一下 MySQL 安装。
第四步 —— 测试 MySQL
无论你是怎样安装的,MySQL 应该已经自动开始运行了。为了测试这一点,可以检查它的状态。
- systemctl status mysql.service
复制代码 你会看到雷同以下的输出:
- ● mysql.service - MySQL Community Server
- Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
- Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
- Main PID: 10382 (mysqld)
- Status: "Server is operational"
- Tasks: 39 (limit: 1137)
- Memory: 370.0M
- CGroup: /system.slice/mysql.service
- └─10382 /usr/sbin/mysqld
复制代码 如果 MySQL 没有在运行,你可以利用 sudo systemctl start mysql 命令来启动它。
作为额外的检查,你可以尝试利用 mysqladmin 工具连接到数据库,这是一个答应你运行管理命令的客户端工具。比方,以下命令表现以名为 sammy 的 MySQL 用户身份连接(-u sammy),提示输入暗码(-p),并返回版本信息。请确保将 sammy 更改为你专用的 MySQL 用户的名称,并在提示时输入该用户的暗码:
- sudo mysql
- admin -p -u sammy version
复制代码 你应该会看到雷同于以下的输出:
- mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
- Copyright (c) 2000, 2020, 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 8.0.19-0ubuntu5
- Protocol version 10
- Connection Localhost via UNIX socket
- UNIX socket /var/run/mysqld/mysqld.sock
- Uptime: 10 min 44 sec
- Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038
复制代码 这意味着 MySQL 已经启动并运行。
结论
现在你在服务器上安装了一个根本的 MySQL 设置。以下是你可以采取的一些下一步示例:
- 设置一个 LAMP 或 LEMP 堆栈
- 利用 SQL 训练运行查询
- 利用 phpMyAdmin 管理你的 MySQL 安装
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |