MySQL的安装非常大略,更新包索引,安装mysql-server包,末了运行安全设置脚本。
sudo apt updatesudo apt install mysql-serversudo mysql_secure_installation
本文将先容如何在Ubuntu18.04上安装MySQL 5.7版本。但是,如果你想从一个已经存在的版本升级到5.7则不适用本文,请参考本号历史文章。
如果按照本文按照,须要具备:

Ubuntu 18.04, 在APT包库中,默认情形下只有最新版的MySQL。本文写作是MySQL的版本是5.7。
为了安装MySQL,须要在你的做事器上通过apt更新包索引:
sudo apt update
然后按照默认软件包:
sudo apt install mysql-server
实行上面命令将会安装MySQL,但并不会让你设置密码或者做任何其它配置。由于,这样会使你的安装不屈安,我们将不才一步办理该问题。
配置MySQL(步骤2)对付全新安装,你该当运行包含的安全脚本。该脚本改变一些诸如远程root登录和大略用户等不屈安的缺省选项。在老版本的MySQL中,你还须要手动初始化数据目录,但现在将被自动完成。
运行安全脚本:
sudo mysql_secure_installation
该脚本将通过一系列的提示帮你完成MySQL安装安全选项的变更。第一个提示将讯问你是否乐意安装密码检测插件,该插件用来测试你设置的MySQL密码的强壮性。无论你如何选择,下一个提示是让你设置MySQL root用户的密码。回车,然后须要确认你输入的密码。
从这开始,后续所有问题可以输入Y或者回车,采取默认配置即可。这将移除一些匿名用户和测试数据库,并且禁用远程root登录。同时,将加载这些新规则以使您做的变更能够在MySQL急速生效。
初始化MySQL数据目录,在5.7.6之前的版本须要利用mysql_install_db, 5.7.6及之后的版本利用mysqld --initialize进行初始化。如果您通过步骤1描述的Debian包安装的MySQL,数据目录将被自动初始化,您不须要做任何事情。如果你试着运行这个命令,您将看到如下缺点提示信息:
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists). . .2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting
须要把稳的是,虽然你设置了MySQL做事root用户的密码,但当通过MySQL终端登录时并不能通过密码认证登录。如果您乐意,可以通过步骤3进行设置。
调度用户认证和权限(步骤3,可选)在Ubuntu系统中MySQL 5.7及之后的版本,MySQL的root用户被默认设置成通过auth_socket插件进行认证,而不是通过密码。在很多情形下,这些配置可以使系统更加的安全和可靠,但如果许可外部程序(例如phpMyAdmin)访问时,这将是事情变得非常繁芜。
为了能够以root用户通过密码的办法连接MySQL,你须要将其认证办法从 auth_socket 办法变更为mysql_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插件的办法进行认证。要将root用户设置为通过密码认证,运行如下ALTER USER命令。务必将密码设置为高强度的密码,须要把稳的是该操作将改变您在步骤2中设置的密码:
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的root用户现在是通过密码的办法进行认证。一旦确认做事器上配置挣钱,你可以退出MySQL终端:
exit
或者,有些人可能会创造,利用专用用户连接到MySQL更适宜他们的事情流。要创建这样的用户,请再次打开mysql 终端:
sudo mysql
把稳: 如果您启用的root用户的密码认证,您须要通过不同的命令登录MySQL终端。如上所述,将以常规用户权限运行MySQL客户端。只能通过认证以得到管理员权限。
mysql -u root -p
如下,创建一个新用户,并设置强密码:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
然后,付与新用户得当的权限。例如,付与新用户访问数据库中所有表的权限,及添加、变更和移除用户的权限,通过如下命令即可:
GRANT ALL PRIVILEGES ON . TO 'sammy'@'localhost' WITH GRANT OPTION;
须要把稳的是,这时您不再须要运行FLUSH PRIVILEGES命令。只有通过 INSERT, UPDATE或者DELETE命令的办法变更授权表的时候才须要该命令。由于您创建了一个新用户,而不是改变一个已经存在的用户,因此FLUSH PRIVILEGES并不是必须要运行的。
退出MySQL终端:
exit
末了,我们测试一下安装的结果。
测试MySQL(步骤4)无论您如何安装的,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(-u root)用户连接MySQL,并提示输入密码(-p),然后返回版本信息。
sudo mysqladmin -p -u root version
可以看到如下输出信息:
mysqladmin Ver 8.42 Distrib 5.7.21, for Linux on x86_64Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Server version 5.7.21-1ubuntu1Protocol version 10Connection Localhost via UNIX socketUNIX socket /var/run/mysqld/mysqld.sockUptime: 30 min 54 secThreads: 1 Questions: 12 Slow queries: 0 Opens: 115 Flush tables: 1 Open tables: 34 Queries per second avg: 0.006
这意味着MySQL已经起来,并处以运行状态。
结论至此,您已经完成了数据库的安装,并进行了基本的设置。后续本号将进行更深入的先容,包括数据的利用、基于编程办法的利用和数据内部的实现等内容。