本教程的以前版本由HazelVirdó编写
介绍
MySQL是一个开源数据库管理系统,通常作为流行的LAMP (Linux,Apache,MySQL,PHP / Python / Perl)的一部分进行安装。 它使用关系数据库和SQL(结构化查询语言)来管理其数据。
短版本的安装很简单:更新软件包索引,安装mysql-server
软件包,然后运行包含的安全脚本。
sudo apt update
sudo apt install mysql-server
mysql_secure_installation
本教程将解释如何在Ubuntu 18.04服务器上安装MySQL版本5.7。 但是,如果您想将现有的MySQL安装更新至5.7版本,则可以改为阅读本MySQL 5.7更新指南 。
先决条件
要学习本教程,您需要:
- 遵循此初始服务器设置指南设置的一台Ubuntu 18.04服务器,包括sudo非root用户和防火墙。
第1步 - 安装MySQL
在Ubuntu 18.04上,默认情况下,只有最新版本的MySQL包含在APT软件包存储库中。 在撰写本文时,这就是MySQL 5.7
要安装它,请更新服务器上的软件包索引并使用apt
安装默认软件包:
sudo apt update
sudo apt install mysql-server
这将安装MySQL,但不会提示您设置密码或进行任何其他配置更改。 因为这会使MySQL的安装不安全,我们将在下一部分介绍这一点。
第2步 - 配置MySQL
对于全新的安装,您需要运行附带的安全脚本。 这改变了一些不太安全的默认选项,例如远程root登录和示例用户。 在旧版本的MySQL中,您还需要手动初始化数据目录,但现在会自动完成。
运行安全脚本:
sudo mysql_secure_installation
这将带您通过一系列提示,您可以对MySQL安装的安全选项进行一些更改。 第一个提示会问你是否想要设置验证密码插件,它可以用来测试你的MySQL密码的强度。 无论您选择什么,下一个提示将是为MySQL 根用户设置密码。 输入并确认您选择的安全密码。
从那里,您可以按Y
然后按ENTER
接受所有后续问题的默认值。 这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即遵守您所做的更改。
要初始化MySQL数据目录,您可以在5.7.6之前使用mysql_install_db
,而在5.7.6之后使用mysqld --initialize
。 但是,如果您从Debian发行版安装了MySQL,如第1步中所述,数据目录会自动初始化; 你不必做任何事情。 如果您尝试运行该命令,您会看到以下错误:
2018-04-23T20:11:15.998193Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
最后,让我们测试一下MySQL的安装。
第3步 - 测试MySQL
不管你如何安装它,MySQL应该已经开始自动运行。 要测试它,请检查其状态。
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身份连接到MySQL( -u root
),提示输入密码( -p
)并返回该版本。
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安装程序。 以下是您可以采取的几个步骤: