专栏首页Mintimate's Blog一篇文章,四种方法教你在Linux上安装MariaDB
原创

一篇文章,四种方法教你在Linux上安装MariaDB

作者:Mintimate

博客:https://www.mintimate.cn

Mintimate's Blog,只为与你分享

封面嗷

MariaDB

2008年1月16日,MySQL AB 宣布它已经同意被Sun微系统集团以大约10亿美元的价格收购。该项收购已于2008年2月26日完成。而这也意味着,MySQL日后可能会走向完全的商用;为了继续保持在GNU GPL开源,MariaDB孕育而出,并且MariaDB的首席开发者:Monty(Ulf Michael Widenius),正式MySQL AB的创世成员。

MariaDBMySQL关系数据库管理系统的一个复刻,由社区开发,有商业支持。MariaDB是以Monty的小女儿Maria命名的,就像MySQL是以他另一个女儿My命名的一样。

MariaDB VS MySQL

MariaDB和MySQL区别,其实不是很大,尤其是MySQL5.x和MariaDB,目前MariaDB和MySQL主要区别:

许可协议:MariaDB使用的是GPL协议,而MySQL使用的是GPL和Commercial License(商用协议)。MariaDB比MySQL更加开源。

SQL引擎:MariaDB相比MySQL,除了提供标准的MyISAMBLACKHOLECSVMEMORYARCHIVEMERGE引擎外,在MariaDB源码与二进制包中还提供下列存储引擎:AriaXtraDB (与InnoDB对等替换)、FederatedX (与Federated对等替换)、Cassandra等SQL存储引擎。

速度快:据MariaDB称,同等配置条件下,MariaDB检录会比MySQL快

MariaDB安装方法

既然MariaDB优点这么多,如何在自己的Linux服务器上安装呢?本文介绍以下方法:

  • 面板安装【易入门、可视化】:使用宝塔等面板进行安装。
  • 软件包管理器安装【易上手、易配置】:使用Linux自带的apt-get、yum等软件包管理器安装
  • Docker安装【易上手、易配置】:使用Docker进行安装
  • 编译安装【高难度、高灵活性】:下载MariaDB的源码,自行编译安装

本次使用腾讯云轻量应用服务器进行演示,腾讯云轻量应用服务器,提供了标准的Linux环境,十分适用于个人和小型团队嗷。

最近还有74元买一年2C 4G 8M轻量应用服务器的新用户福利(老用户也可以看看,说不定也有其他福利):

方法比较

以下四种方法,殊途终归。但是如果要说上手难度,那么应该是:

编译安装>Docker安装>面板安装>软件包管理器安装

个人推荐,小白用户使用面板安装或软件包管理器安装。高玩用户,可以使用编译安装和Docker安装,可以提供更多定制化功能,而且版本会更新。(面板版本和软件包管理器更新延迟较多)

网上的MariaDB编译教程都太旧了,很多跟着教程走,根本无法搭建,所以特意加上编译安装的方法嗷~

面板安装

面板安装过于简单,首先是腾讯云轻量应用服务器有提供宝塔面板的镜像,可以直接使用:

Lighthouse的宝塔镜像

但是镜像基于CentOS,如果喜欢Ubuntu或者Debian,可以选择Ubuntu/Debian镜像后,看下文如何安装。

安装宝塔

如果你选择自己安装宝塔,也很简单。举个例子。我买了腾讯云轻量应用服务器的Debian10镜像。只需要终端输入:

# 新服务器第一件事~
sudo apt-get update
sudo apt-get upgrade 
# 宝塔需要unzip支持
sudo apt-getinstall unzip
# 宝塔官网给的安装命令
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

具体可以参考宝塔官网

安装MariaDB

之后,我们使用宝塔面板即可安装MariaDB:

宝塔安装MariaDB

快速安装是使用apt-get等工具安装,编译安装类似于下文的源码编译,只是过程由宝塔自动完成。

软件包安装

软件包安装也很简单,我们使用apt-get即可安装我们的MariaDB:

sudo apt-get install mariadb-server

之后,使用MariaDB自动的工具初始化设置即可:

sudo mysql_secure_installation
安装MariaDB
mysql_secure_installation初始化

但是这个时候,是无法远程连接服务器的,使用net命令查看3306端口:

netstat -ntulp | grep 3306
3306端口

你需要注释或删除/etc/mysql/mariadb.conf.d/50-server.cnf

bind-address            = 127.0.0.1

这里的细节配置,不再赘述。

Docker安装

当然,很多人提倡使用Docker,Dokcer也是一个不错的方法。建议配合项目文档:MariaDB Docker

安装Docker

安装Docker很简单,我们使用Docker的一键安装脚本:

curl -sSL https://get.daocloud.io/docker | sh

拉取镜像

之后,我们拉取MariaDB的Docker镜像,这里我们直接拉取最新版本:

docker pull mariadb
拉取最新版本

拉取成功:

拉取成功

启动镜像

最后,我们启动镜像。当时在启动前,我们新建一个文件夹,用来作为数据库文件夹,之后用来映射给MariaDB Docker:

mkdir /mydata/data -p
在主系统创建文件夹

之后,启动MariaDB Docker镜像:

docker run --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD={root用户密码} -v /mydata/data:/var/lib/mysql -d mariadb

比如:

docker启动MariaDB

测试使用

我们本地使用Navicat测试连接试试:

测试成功

编译安装

编译安装,灵活性很高,但是绝对是四种方法里,难度最高的;如果小白用户尝试,建议多阅读几遍嗷。实在不行,可以评论区留言╮( ̄▽ ̄"")╭。

首先,SSH连接我们的服务器,这里使用腾讯云轻量应用服务器,并安装了ZSH、配置了oh-my-zsh(目的是为了更方便操作Terminal,如果你也厌倦了Bash的操作,参考文章:Linux/Mac如何配置ZSH并使用Oh-my-zsh?让你的终端更加实用、美观

SSH登录服务器

安装依赖

根据MariaDB官方项目文档,我们需要安装依赖:gcc/g++ 4.8.5、GNU make 3.75 or later、bison (3.0)、libncurses、zlib-dev和libevent-dev。

我们使用软件包管理器安装这些依赖即可,以下是Debian/Ubuntu使用软件包管理器安装,CentOS记得替换为yum的仓库名:

# 安装cmake
sudo apt-get install cmake
# 安装GCC编译器
sudo apt-get install build-essential 
# 安装Openssl以及Openssl依赖
sudo apt-get install openssl libssl-dev
# 安装bison
sudo apt-get install bison
# 安装libncurses-dev
sudo apt-get install libncurses-dev
安装build-essential

下载MariaDB源码

之后,我们下载MariaDB的源码,可以到MariaDB发布地址下载,这里我们下载最新稳定版本10.6.4:

下载最新稳定版本10.6.4

我们使用Linux的wget命令进行下载:

# 下载10.6.4源码
wget 'https://downloads.mariadb.org/interstitial/mariadb-10.6.4/source/mariadb-10.6.4.tar.gz'

之后,解压并进入源码内:

解压并进入源码内

Cmake编译

我们使用Cmake进行编译,我的编译参数是:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
cmake生产配置文件

这里解释一下编译参数:

  • DCMAKE_INSTALL_PREFIX:MariaDB的安装地址
  • DMYSQL_DATADIR:数据库文件存放地址
  • DMYSQL_UNIX_ADDR:sock文件编译后存放地址

以上参数需要和下文my.cnf同步(如果你需要修改我的)

之后,我们进行安装即可:

make

过程可能很久很久~~~╮( ̄▽ ̄"")╭,建议使用screen挂起后台!!!

另外,如果你的Linux设备是多核,可以加上-j参数以加快编译速度,比如我的是腾讯云轻量应用服务器4核服务器:

make -j 4
加速编译
编译完成

编译没问题,我们直接安装即可:

make install 
make install

安装好后,到/usr/local文件夹下,即可看到我们的MariaDB:

MariaDB

初始化和配置

接下来,我们需要初始化MariaDB

1. 设置用户

创建mysql用户组和用户:

groupadd -g 306 -r mysql
useradd -u 306 -g mysql -r -s /sbin/nologin mysql

创建SQL目录(上文编译参数内):

mkdir /mydata/data -p
# 归其为mysql用户
chown mysql:mysql /mydata/data

进入MariaDB安装地址,修改文件归属到mysql用户:

cd /usr/local/mysql
chgrp mysql ./*
修改归属用户

2. 初始化脚本

使用MariaDB自带的脚本,对MariaDB进行初始化(当前在MariaDB安装目录内,即:/usr/local/mysql内):

scripts/mysql_install_db --user=mysql --datadir=/mydata/data

3. 设置参数

初始化完成后,需要设置my.cnf文件,早期版本的MySQL和MariaDB都有提供my.cnf为模版,现在已经没有提供,需要手动创建,我们使用vim手动创建到/etc下。

vim /etc/my.cnf

我的配置文件参考(更多参数,可以看官方文档):

# Begin /etc/mysql/my.cnf
# The following options will be passed to all MySQL clients
[client]
port            = 3306
socket          = /tmp/mysql.sock

# The MySQL serve
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
# MariaDB安装地址
basedir         = /usr/local/mysql
datadir         = /mydata/data
#skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 16K
myisam_sort_buffer_size = 8M
skip-name-resolve = 0

# MariaDB不监听任何IP和TCP端口
# skip-networking

# required unique id between 1 and 2^32 - 1
server-id       = 1
innodb_data_file_path = ibdata1:12M:autoextend

# You can innodb_buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 32M
innodb_log_file_size = 48M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_force_recovery =1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
# End /etc/my.cnf

4. 注册服务和环境变量

之后,我们需要注册为系统服务,方便启动MariaDB,这里使用systemctl作为服务,非service

注册为服务:

vim /usr/lib/systemd/system/mysql.service

添加内容:

[Unit]
Description=MariaDB

[Service]
LimitNOFILE=10000
Type=simple
User=mysql
Group=mysql
PIDFile=/mydata/data/microServer.pid
ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/mydata/data
ExecStop=/bin/kill -9 $MAINPID

[Install]
WantedBy=multi-user.target

设置好后,使用systemctl进行启动即可。

Systemctl启动MariaDB成功

还要添加MariaDB安装目录下的bin目录到环境变量内,如:

PATH=/usr/local/mysql/bin:$PATH

5. 设置root用户

设置root用户和允许远程登录,使用MariaDB自带的帮助脚本:

# 进入MariaDB安装目录下的bin文件夹
cd /usr/local/mysql/bin
# 运行帮助脚本
./mariadb-secure-installation
帮助脚本

运行脚本后,会设置root用户的密码,如果需要运行root用户远程登录,还需要进入MariaDB的交互模式,输入:

use mysql
grant all privileges on *.* to 'root'@'%' identified by '设置的root用户密码' with grant option;
flush privileges;

6. 远程连接

最后,客户端即可连接:

安装成功

END

真不错~

哇,万字长文终于写完了。现在的数据库虽然有了很大软件和系统,但是MariaDB绝对是SQL型数据库的“重磅选手”。希望这篇文章对你有用嗷~

PS:不知不觉,是不是把LEMP的部署全部讲了?是不是PHP还缺一篇?(*☻-☻*)

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注作者,阅读全部精彩内容
登录 后参与评论
0 条评论

相关文章

  • 一篇文章、三种方法在Debian上轻松安装Nginx

    “Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。”

    Mintimate
  • 基于腾讯云轻量应用服务器和Umami部署网站流量统计后台

    想知道自己网站,每天有多少人浏览?或者想更直观的查看自己网站的访客统计?很多人会使用Google Analytics等工具进行统计。一般统计的数据:

    Mintimate
  • 实战篇:手把手教你Linux安装Mysql(细致入微)

    安装Linux服务器可选择:Centos,Redhat,Oracle Linux。 本文配置为 Redhat 7.9 x86_64,内存2G,硬盘50G。

    Lucifer三思而后行
  • 如何在 Linux 上安装/卸载一个文件中列出的软件包?

    在某些情况下,你可能想要将一个服务器上的软件包列表安装到另一个服务器上。例如,你已经在服务器 A 上安装了 15 个软件包并且这些软件包也需要被安装到服务器 B...

    用户8639654
  • 如何搭建 LAMP 网站服务环境

    Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为...

    宮園薰
  • 一步一步教您如何在 CentOS 8 上安装 Zabbix 6.0或者6.2

    Zabbix 服务器可安装在任何 Linux 发行版上,在本教程中,我将向您展示如何在 CentOS 8 / RHEL 8 / Oracle Linux 8 /...

    网络技术联盟站
  • CentOS 7下安装Nextcloud搭建个人网盘

    越来越多的云盘一不开心就关闭,大公司的网盘也不靠谱啊,为了解决这些问题,我们可以搭建一个自己的个人网盘(私有云盘),常用的开源框架包括ownCloud,Seaf...

    星哥玩云
  • OneinStack一键安装PHP/JAVA/HHVM和超详细的VPS手动安装LNMP的方法

    继著名的LAMP Stack(Linux + Apache + MySQL/MariaDB + PHP)网站环境之后,LNMP Stack(Linux + Ng...

    砸漏
  • 中秋福利 | 15个系列100+篇超实用云原生原创干货合集(内含腾讯彩蛋)

    还有2天,就要迎来中秋小长假啦 这个中秋节你打算怎么过? 小云选择把这篇干货全部拿下! 云原生技术干货文章合集,来咯~ 2021 年,要说咱们技术圈子里什...

    腾讯云原生
  • ubuntu架设LAMP服务器

    Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为...

    用户7639835
  • LINUX下RPM安装MYSQL5.6

    之前使用yum安装mysql确实很方便,但是默认安装的myql5.0版本的,不支持utf8mb4(utf8mb4扩展到一个字符最多能有4节,所以能支持更多的字符...

    用户4988376
  • 详解使用可道云Kodbox快速在云服务器上搭建云盘,难易方法一次性学会

    如今,个人服务器已经不是什么稀罕的事情了。一台服务器,可以多台Linux集群,也可以是一台轻量应用服务器,亦或者是个人的树莓派、开发版等。

    Mintimate
  • 搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境

    备注:,将我的博客内容整理成册,首先会在博客里优先发布,后续可能的话整理成电子书,主要从linux的最基础内容开始进入Linux的Mono开发方面的话题。本文是...

    张善友
  • 开工必备!50+篇超实用云原生技术干货合集

    kai 开 gong 工 da 大 ji 吉 新年新气象,更要1G棒 2020年没写完的代码,现在还有思路吗? 2021年开始使用云原生技术了吗? 一开工就遇...

    腾讯云原生
  • 从零开始折腾博客(3):一键安装脚本LAMP.sh搭建Wordpress站点

    LAMP:Linux+Nginx+MySQL+PHP,为动态网站的搭建提供了一系列的平台支持。

    idealclover
  • 转发有礼 | 50篇+云原生系列干货文章汇总,请查收!

    云原生技术干货文章合集,来咯~ 2020 年,要说咱们技术圈子里什么最火? 云原生肯定是那 NO.1 截止目前,我们不难看出,K8s 容器、服务网格、...

    腾讯云原生
  • Ubuntu上释放空间的5种简单方法

    大多数人可能在系统磁盘存储不足的情况下执行释放空间这个操作,也可能在 Linux 系统磁盘存储满了的情况下执行这个操作。

    砸漏
  • 使用mysqldump备份MySQL或MariaDB

    在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进...

    无敌小笼包
  • Centos7安装Mysql失败+如何正确安装mysql+完全卸载mysql

    MariaDB 是MySQL的一个分支,从MySQL被甲骨文收购之后开发的一个替代品,目前全部兼容MySQL。 MariaDB 是一个采用 Maria 存储引...

    一只胡说八道的猴子

扫码关注腾讯云开发者

领取腾讯云代金券