如何在Arch Linux上安装MariaDB 10.3或MySQL 8.0

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

先决条件

运行最新的Arch Linux的Vultr服务器(请参阅本文。)
须藤访问:

需要以root身份运行的命令带有前缀 #,以及可以由 $。建议以root用户身份运行命令的方式是,以普通用户的身份为每个命令添加前缀 sudo

您可以选择安装MariaDB或MySQL,如以下两节所述。

安装MariaDB 10.3数据库

安装MariaDB:

# pacman -S mariadb

如果运行Btrfs文件系统,则出于性能原因,应考虑禁用数据库目录的写时复制:

# chattr +C /var/lib/mysql/

配置MariaDB:

# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

启动MariaDB,并使其在每次启动后启动:

# systemctl enable --now mariadb

完成建议的安全措施。首先,按ENTER键输入当前的根数据库密码,设置一个新的根密码,然后按ENTER键在所有其他提示上回答是。

# mysql_secure_installation

安装MySQL 8.0数据库

尽管强烈建议使用MariaDB,但您也可以从Arch Linux用户系统信息库(AUR)安装MySQL。了解AUR软件包不受官方支持,更新的频率可能较低,并且由于它们不一定是经过审查的受信任用户提交的,因此应检查其PKGBUILD / ETC的任何可疑代码。也就是说,截至2019年初,当前的AUR维护者 mysql 是“ Muflone”。尽管他不是经过审查的可信任用户,可以发布到正式存储库,但他自2011年以来一直是Arch的重要贡献者,维护着约250个AUR软件包(其中许多很受欢迎),并且从未做过任何可疑的事情。

要安装MySQL,请编译并安装AUR软件包 mysql。请参阅在Arch Linux上构建软件包(包括AUR)。 MariaDB和MySQL具有非常相似的安装后步骤。

如果运行Btrfs文件系统,则出于性能原因,应考虑禁用数据库目录的写时复制:

# chattr +C /var/lib/mysql/

配置MySQL:

# mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

启动MySQL,并使其在每次启动后启动:

# systemctl enable --now mysqld

完成建议的安全措施。上一条命令显示了自动生成的临时根数据库密码。设置新的root密码。回应 y 在所有其他的是/否提示上,然后选择 2 用于“强”密码验证策略。

# mysql_secure_installation

请注意,您不能在同一系统上安装MariaDB和MySQL,因为MariaDB被用作嵌入式替代产品,并且具有相同名称的文件。另外,当使用少于4GB的总RAM(物理RAM +交换空间)进行编译时,编译时可能会遇到内存耗尽错误。

测试连接

要以根数据库用户身份连接到MariaDB或MySQL,请运行以下命令:

$ mysql -u root -p

退出:

MariaDB [(none)]> quit

考虑防火墙

您可能要考虑配置防火墙。默认情况下,MariaDB将在端口上侦听 3306,不仅来自本地主机,还来自公共IP地址上的任何位置。默认情况下,MariaDB仅批准来自本地主机的传入连接,但外部尝试仍将到达MariaDB并收到错误消息: Host... is not allowed to connect to this MariaDB server。尽管MariaDB被认为非常安全,但除非绝对必要,否则,防火墙甚至不向MariaDB服务器提供外部数据包也更加安全。即使需要直接远程访问,使用防火墙阻止流量并使用VPN也会更加安全。

准备升级

默认情况下, pacman 当通过运行以下命令升级整个Arch系统时,将在新版本发布到官方Arch存储库时升级MariaDB:

# pacman -Syu

建议配置 pacman 不会自动安装对MariaDB的升级。发布升级后,您将升级整个Arch系统, pacman 会让您知道有新版本可用。编辑 /etc/pacman.conf,并添加以下内容:

IgnorePkg   = mariadb*

在升级之前备份数据库是一个好主意。

什么时候 pacman 显示您有一个MariaDB升级,请强制升级软件包:

# pacman -S mariadb mariadb-clients mariadb-libs

如果您正在运行AUR MySQL软件包, pacman 永远不会自动从AUR编译并安装新版本,因此不需要上述步骤,但是仍然需要执行以下步骤。

升级后,软件包的 .install 脚本将提醒您执行以下步骤,但是阻止自动升级可确保您不会错过它。

重新启动MariaDB,以加载新版本:

# systemctl restart mariadb

检查并更新您的表以符合新版本:

# mysql_upgrade -u root -p

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com