一篇文章,详细教你怎么在Linux上编译安装MariaDB(10.6.4)

MariaDB

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快

教程说明

网上Linux编译安装MariaDB的方法其实很多,我为什么要写这篇文章呢?主要原因:

  • 冗余严重:现在都已经MariaDB 10.6.4了,早就没有最开始提供的my.cnf文件,各大教程还在cp /usr/local/mysql /etc/my.cnf
  • Copy严重:为什么所有教程,步骤基本一样,错的也一样呢?真是个奇怪的事情嗷。

另外,编译安装MariaDB本来就是比较困难的,如果你觉得太难,可以使用Docker、软件包管理器来安装MariaDB。

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

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

编译说明

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

首先,SSH连接我们的服务器,这里使用腾讯云轻量应用服务器,并安装了ZSH、配置了oh-my-zsh

配置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

依赖安装完成

下载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-> 使mysql.service生效
systemctl daemon-reload
# 启动mysql.server
systemctl start mysql.service

使用systemctl status查看状态

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

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

5. 设置root用户

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

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

使用帮助脚本
运行脚本后,会设置root用户的密码、是否运行远程登、是否删除测试表等选项。

注意⚠️

完成上诉步骤后,其实MariaDB就可以使用了,但是我们需要设置账号,用来远程访问。默认是不允许root用户远程访问的
如果需要root用户远程登录,还需要进入MariaDB的交互模式,输入:

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

运行root用户远程连接

测试连接

现在,MariaDB就已经安装完成了,我们使用客户端Navicat进行测试,你也可以使用DataGrip等软件测试。不过,如果有Linux防火墙,记得放行端口,比如,腾讯云轻量应用服务器:
我为了方便,放行了全部端口……

最后,客户端即可连接:
Navicat连接服务器

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mintimate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值