介绍
MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux、Apache、MySQL、PHP/Python/Perl)堆栈的一部分安装。它实现了关系模型并使用结构化查询语言(也称为 SQL)来管理其数据。
本快速入门教程将解释如何在 Ubuntu 20.04 服务器上安装 MySQL 8.0 版。
先决条件
要学习本教程,您需要:
- 一台 Ubuntu 20.04 服务器,具有非 root 管理用户和使用 UFW 配置的防火墙。要进行设置,请按照我们针对 Ubuntu 20.04 的初始服务器设置指南进行操作。
第 1 步 – 安装 MySQL
要安装 MySQL,如果您最近没有更新服务器的包索引,请先更新:
- sudo apt update
然后安装mysql-server
包:
- sudo apt install mysql-server
第 2 步 – 配置 MySQL
使用以下命令运行 MySQL 包含的安全脚本sudo
:
- sudo mysql_secure_installation
这将带您完成一系列提示,您可以在其中对 MySQL 安装的安全选项进行一些更改。第一个提示会询问您是否要设置验证密码插件,该插件可用于测试您的 MySQL 密码的强度。
如果您选择设置验证密码插件,脚本将要求您选择密码验证级别,最弱的是0
,最强的是2
:
OutputSecuring 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根用户的密码:
OutputPlease set the password for root here.
New password:
Re-enter new password:
然后脚本会询问您是要继续使用刚刚输入的密码还是要输入一个新密码。如果您对密码感到满意,请输入Y
以继续脚本:
OutputEstimated 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
接受所有后续问题的默认值。
第 3 步 – 创建专用 MySQL 用户并授予权限
安装后,MySQL 会创建一个特权root用户帐户,您可以用它来管理您的数据库,但最好避免在管理功能之外使用此帐户。此步骤概述了如何使用根MySQL 用户创建新用户帐户并授予其权限。
以根MySQL 用户身份连接到数据库:
- sudo mysql
注意:如果您使用其他教程安装 MySQL 并为root启用密码身份验证,则需要使用以下命令访问 MySQL shell:
- mysql -u root -p
一旦您可以访问 MySQL 提示,您就可以使用CREATE USER
语句创建一个新用户。它们遵循以下通用语法:
- CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
在选择用户的身份验证插件时,您有多种选择。auth_socket
前面提到的插件很方便,因为它提供了强大的安全性,而无需有效用户输入密码即可访问数据库。但它也阻止了远程连接,当外部程序需要与 MySQL 交互时,这会使事情变得复杂。
作为替代方案,您可以完全省略语法部分,让用户使用 MySQL 的默认插件. 以下 ocmmand 创建一个使用. 请务必更改为您的首选用户名和您选择的强密码:WITH authentication plugin
caching_sha2_password
caching_sha2_password
sammy
password
- CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
注意:某些版本的 PHP 存在一个已知问题,该问题会导致caching_sha2_password
. 如果您打算将此数据库与 PHP 应用程序(例如 phpMyAdmin)一起使用,您可能希望创建一个用户,该用户将使用旧的但仍然安全的mysql_native_password
插件进行身份验证:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
如果您不确定,您始终可以创建一个用户,caching_sha2_plugin
然后ALTER
使用以下命令进行身份验证:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
创建新用户后,您可以授予他们适当的权限。
为了说明,下面的命令授予用户全球特权CREATE
,ALTER
和DROP
数据库,表,和用户,以及所述电源INSERT
,UPDATE
以及DELETE
数据从服务器上的任何表。它还授予用户使用 查询数据的能力SELECT
。运行此GRANT
语句,替换sammy
为您自己的 MySQL 用户名,将这些权限授予您的用户:
- GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
警告:一些用户可能想要授予他们的 MySQL 用户ALL PRIVILEGES
权限,这将为他们提供类似于root用户权限的广泛超级用户权限,如下所示:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
不应轻易授予如此广泛的权限,因为任何有权访问此 MySQL 用户的人都将完全控制服务器上的每个数据库。
在此之后,运行以下FLUSH PRIVILEGES
命令是一种很好的做法:
- FLUSH PRIVILEGES;
然后就可以退出 MySQL 客户端了:
- exit
将来,要以新 MySQL 用户身份登录,您将使用如下命令:
- mysql -u sammy -p
该-p
标志将导致 MySQL 客户端提示您输入 MySQL 用户的密码以进行身份验证。
结论
您现在已经在服务器上安装了基本的 MySQL 设置。以下是您可以采取的后续步骤的几个示例: