如何在Ubuntu 18.04上安装MySQL

幻昼 2021年05月20日 199次浏览

有了Web服务器之后,您需要安装MySQL来存储和管理站点数据。

通过键入以下命令安装MySQL:

sudo apt install mysql-server

现在已安装MySQL数据库软件,但其配置尚未完成。

为了确保安装安全,MySQL附带了一个脚本,该脚本将询问我们是否要修改一些不安全的默认值。通过键入以下命令来启动脚本:

sudo mysql_secure_installation

该脚本将询问您是否要配置VALIDATE PASSWORD PLUGIN

**警告:**启用此功能只是一个判断。如果启用,与指定条件不匹配的密码将被MySQL拒绝并出现错误。如果您将弱密码与自动配置MySQL用户凭证的软件(例如phpMyAdmin的Ubuntu软件包)结合使用,则会导致问题。禁用验证是安全的,但是对于数据库凭据,应始终使用强壮,唯一的密码。

回答Y“是”,否则继续进行任何操作(不启用)。

VALIDATE PASSWORD PLUGIN 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 plugin?

Press y|Y for Yes, any other key for No:

如果启用了验证,脚本还将要求您选择密码验证级别。请记住,如果输入2(最高级别),则尝试设置任何不包含数字,大写,小写字母和特殊字符或基于常见词典单词的密码时,都会收到错误消息。

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: 1

接下来,将要求您提交并确认root密码:

Please set the password for root here.

New password:

Re-enter new password:

对于其余的问题,您应该在每个提示下按下YENTER击键。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即遵守我们所做的更改。

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

如果使用auth_socket适合您的工作流程的MySQL访问插件,则可以继续执行步骤3。但是,如果您希望以root用户身份连接到MySQL时使用密码,则需要将其身份验证方法从切换auth_socketmysql_native_password。为此,请从您的终端打开MySQL提示符:

sudo mysql

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

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插件进行了身份验证。要将帐户配置为使用密码进行身份验证,请运行以下ALTER USER命令。确保更改password为您选择的强密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

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

FLUSH PRIVILEGES;

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

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)

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

exit

注意:将root的MySQL用户配置为使用密码进行身份验证后,您将无法再sudo mysql使用以前使用的命令访问MySQL 。相反,您必须运行以下命令:mysql -u root -p 复制输入刚刚设置的密码后,您将看到MySQL提示。

至此,您的数据库系统已经建立